2013-03-05 23 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; 
}