2011-05-02 110 views
1

定义(Core.h):如何在类初始化时使用非静态类函数初始化静态函数指针?

static int (*foolink)(int*, char*, key*, key*); 

在Core.cpp还重新定义。此代码导致错误:

foolink = this->step; 

错误:

Engine/Core.cpp:31: error: argument of type 'int (Core::)(int*, char*, key*, key*)' does not match 'int (*)(int*, char*, key*, key*)' 

指针使用:

(*foolink)(NULL, NULL, NULL, NULL); 

有什么不对?请帮帮我!

回答

3

在C++程序中,大多数函数都是成员函数;也就是说,他们是班级的一部分。您不允许使用普通的函数指针指向成员函数;相反,您必须使用成员函数指针

在你的情况,你可以将它定义为

 v you have to name the class here 
int (YourClass::*foolink)(int*, char*, key*, key*); 
foolink = &YourClass::step; 

// This is how you can call the function via member function pointer 
YourClass object, *pObject = &object; 
// One way is to envoke the function from object 
(object.*foolink)(...); 
// The other way is from pointer to object 
(pObject->*foolink)(...); 

C++ FAQ

Pointers to Member Functions

+0

我怎么能打电话吗? (Core :: * foolink)(NULL,NULL,NULL,NULL)不起作用! – HiTECNOLOGYs 2011-05-02 02:59:18

+0

@HiTECNOLOGYs:我会更新我的答案,涉及函数的调用:) – 2011-05-02 03:25:39

1

this->step的类型必须是返回一个整数并将int *,char *,key *和key *作为参数的函数。显然不是。请记住,将类方法分配给普通函数将不起作用;他们都必须是方法,或两者​​都是正常的功能,但不是混合,这是我怀疑你想要做的。