2013-03-05 16 views
2

我有函數指針,它看起來像這樣寫setter和getter在C++的功能指針

int (*FunPtr)(char*sz, unsigned int max_bytes, char* arg1, char* arg2, char* arg3, 
char* arg4);//Function definition 

我初始化它在構造函數中這樣

pagePtr::pagePtr() : FunPtr(Null) 
{ 
} 

pagePtr參數類現在我寫的setter的東西像這個我不知道,如果它是正確的

void pagePtr::setFunPtr(int(*ptr2Fun)(char*sz, unsigned int max_bytes, 
char* arg1, char* arg2, char* arg3, char* arg4)) 
{ 
    FunPtr = ptr2Fun; 
} 

我不知道如何寫一個吸氣劑(和二傳手,如果我做了錯誤)。有什麼建議麼?

+1

我建議你看一看['標準:: function'(http://en.cppreference.com/w/cpp/utility/functional/function),因爲它比純函數指針更靈活。 – 2013-03-05 09:26:00

回答

6
typedef int (*FunPtr)(char*sz, unsigned int max_bytes, char* arg1, char* arg2, char* arg3,char* arg4);//Function definition // magic word! 

void pagePtr::setFunPtr(FunPtr func){m_func = func;} //so clean!!! 
FunPtr getFunPtr(){return m_func;} 

始終使用typedef在這種情況下,使生活變得更加輕鬆簡便大家..

定義一個變量爲FunPtr m_func

+0

感謝您的回答,我的任務是首先弄清楚如何不首先使用typedef,然後使用typedef並查看使用typedef後會有多容易。無論如何,你已經解決了我的下一步。乾杯!!! – cybercop 2013-03-05 09:29:29

-1

爲了完整起見,實際的語法是

int (*pagePtr::getFunPtr())(char*, unsigned int, char*, char*, char*, char*) 
{ 
    return FunPtr; 
}