将类函数指针传递给另一个类

时间:2013-12-17 23:49:38

标签: c++ class pointers

我有以下内容:

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。

谢谢你:)

1 个答案:

答案 0 :(得分:2)

您需要应用一些更改:

  1. 在定义B之前声明classtypedef,因此您可以声明指向成员函数的指针:

    class B;
    typedef void (B::*ptrFcn)();
    
  2. 调用A::call()时,您需要获取完全限定名称的地址:

    var.call(&B::theFunction);
    
  3. 显然,B::theFunctionA有用,您还需要知道B个对象。