如何使用方法指针作为另一种方法的参数?

时间:2015-09-18 19:10:58

标签: c++ function pointers parameters void-pointers

我已经搜遍了这个解决方案,可能只是我不知道如何正确地将它写成文字。

我希望firstFunctionotherFunction的参数中声明地址时调用firstFunction

这是我的代码:

init.h里

class Ainit
{
  //function to be passed into firstFunction
  void test();
  void firstFunction( void (Ainit::*otherFunction)() );  
};

init.cpp

void Ainit::firstFunction( void (Ainit::*otherFunction)() )
{
    (Ainit::*otherFunction)();
}

Xcode:指向以下行*的错误:Expected unqualified-id

(Ainit::*otherFunction)();

如何调用firstFunction中传递给firstFunction的方法?

2 个答案:

答案 0 :(得分:2)

将代码更改为:

(this->*otherFunction)();

答案 1 :(得分:0)

在声明firstFunction的参数和调用* otherFunction时,不需要Ainit ::。以下代码就可以了:

class Ainit { 

void test();

void firstFunction (void * otherFunction());
};

void Ainit::test() {
std::cout << "Hello" << std::endl;
}

void Ainit::firstFunction(void * otherFunction()) {
(*otherFunction)();
}