我有以下类(class):

class DXStartupEncoder {
public:
   void EncodeA(unsigned char*& message) const;
   void EncodeB(unsigned char*& message) const;
   void EncodeC(unsigned char*& message) const;
   void EncodeD(unsigned char*& message) const;
};

<type> dn_sequence[] = {&DXStartupEncoder::EncodeA, &DXStartupEncoder::EncodeB, &DXStartupEncoder::EncodeC, &DXStartupEncoder::EncodeD };

但是,函数指针数组的类型是什么?

最佳答案

如果不确定,请使用typedef

typedef void (DXStartupEncoder::*Encoder)(unsigned char*&) const;
Encoder dn_sequence[] = { .... };

在C++ 11中,您可以使用decltype从值推断类型,因此您甚至不需要知道如何编写成员函数指针的类型(auto无法工作,因为右侧是initializer_list ):
decltype(&DXStartupEncoder::EncodeA) dn_sequence[] = { ... };

顺便说一下,如果您需要避免typedef,则将其编写为:
void (DXStartupEncoder::*dn_sequence[])(unsigned char*&) const = { ... };

07-24 14:02