我有以下内容:
typedef void(*ptrFcn)(); //also I tried typedef void(B::*ptrFcn)()
class A {
....
void call(ptrFcn Fcn);
...
}
直到这里,没有问题......一个简单的类定义
class B{
A var;
...
void theFunction(); //until here, there is no problem
void theCurse(); //this is the problem
}
----- B.cpp -------
void B:: theCurse(){
//a lot of instructions
//here, I need to invoke theFunction without be a static function
var.call(theFunction); //<--- wrong
}
所有这些说明都可以在不使用类的情况下工作,但这两个类都是必需的:(我正在使用Visual Studio 2012。
谢谢你:)
答案 0 :(得分:2)
您需要应用一些更改:
在定义B
之前声明class
是typedef
,因此您可以声明指向成员函数的指针:
class B;
typedef void (B::*ptrFcn)();
调用A::call()
时,您需要获取完全限定名称的地址:
var.call(&B::theFunction);
显然,B::theFunction
对A
有用,您还需要知道B
个对象。