#define SYNC_DATA_CB list<string> (*syncData)(void)
クラスに、関数ポインターへの参照を保持するメンバー(静的かどうかは関係ありません)が必要です。
私はこのように宣言しようとしましたが、コンパイルしませんでした:
SyncProcess{
public:
SyncProcess(SYNC_DATA_CB);
static SYNC_DATA_CB sync_cb_;
}
#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を使用します。
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_;
};