2012-09-27 40 views
0
#define SYNC_DATA_CB list<string> (*syncData)(void) 

我想在我的類中有一個成員(靜態或不是無關緊要),它將保存對函數指針的引用。ro如何聲明一個成員是指向函數的成員

我想聲明這個樣子,但沒有編譯:

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

這甚至還沒有接近到C;請僅使用適用的語言標記您的問題。你也沒有正確地聲明類。 –

回答

1

我想你可能會尋找是一個typedef來代替。

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

class SyncProcess{ 
    public: 
    SyncProcess(syncData); 
    static syncData sync_cb_; 
}; 
0
std::function<list<string> (void)> myPointer; 
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_; 
};