0
#define SYNC_DATA_CB list<string> (*syncData)(void)

クラスに、関数ポインターへの参照を保持するメンバー(静的かどうかは関係ありません)が必要です。

私はこのように宣言しようとしましたが、コンパイルしませんでした:

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

3 に答える 3

1

あなたが探しているのは、代わりにtypedefだと思います。

typedef list<string>(*syncData)(void);

class SyncProcess{
  public:
   SyncProcess( syncData );
   static syncData sync_cb_;
};
于 2012-09-27T15:50:02.580 に答える
0
std::function<list<string> (void)> myPointer;
于 2012-09-27T15:49:54.597 に答える
0

マクロの代わりにtypedefを使用します。

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_;
};
于 2012-09-27T15:50:45.563 に答える