如何 ro 声明一个成员,它是指向函数的指针

How ro declare a member which is a pointer to function

本文关键字:函数 指针 成员 声明 ro 一个 如何      更新时间:2023-10-16
#define SYNC_DATA_CB list<string> (*syncData)(void)

我想在我的类中有一个成员(静态与否无关紧要),它将保存对函数指针的引用。

我试图像这样声明,但没有编译:

SyncProcess{
  public:
   SyncProcess(SYNC_DATA_CB);
   static SYNC_DATA_CB sync_cb_;
}

我认为您可能正在寻找的是typedef。

typedef list<string>(*syncData)(void);
class SyncProcess{
  public:
   SyncProcess( syncData );
   static syncData sync_cb_;
};
std::function<list<string> (void)> myPointer;

使用 typedef 而不是 macro:

class SyncProcess
{
public:    
   // Typedef to create function pointer alias SyncDataFunc
   typedef list<string>(*SyncDataFunc)();
   // Use alias as input parameter type
   SyncProcess(SyncDataFunc func);
   // Use alias as static member type
   static SyncDataFunc sync_cb_;
};