我有以下类(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 = { ... };