我有以下课程:
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 };
Run Code Online (Sandbox Code Playgroud)
但是这个函数指针数组的类型是什么?
typedef如果您不确定,请使用a .
typedef void (DXStartupEncoder::*Encoder)(unsigned char*&) const;
Encoder dn_sequence[] = { .... };
Run Code Online (Sandbox Code Playgroud)
在C++ 11中,您可以使用decltype从值推导出类型,因此您甚至不需要知道如何编写成员函数指针的类型(auto无法工作,因为右侧是初始化器列表):
decltype(&DXStartupEncoder::EncodeA) dn_sequence[] = { ... };
Run Code Online (Sandbox Code Playgroud)
如果您需要避免typedef,顺便说一句,您将其写为:
void (DXStartupEncoder::*dn_sequence[])(unsigned char*&) const = { ... };
Run Code Online (Sandbox Code Playgroud)