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

Ang*_*ber 1 c++ types

我有以下课程:

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)

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

ken*_*ytm 7

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)