如何调用作为参数给出的C++类方法?

Fen*_*rir 3 c++ parameters methods pointers pointer-to-member

我正在尝试将方法作为参数传递给其他方法.

Magner.h:

Class Manager{
public:
 timeCount(void (Manger::*function)(void));
void passedFuction();
}
Run Code Online (Sandbox Code Playgroud)

Manager.cpp,我试图调用timeCount

timeCount(&Manager::passedFuction());
Run Code Online (Sandbox Code Playgroud)

TimeCount正文:

void Manager::timeCount(void(Manager::*function)(void))
{
    std::cout << "It works";
    (*function)(); // here is error
}
Run Code Online (Sandbox Code Playgroud)

ViusalStudio说:

void*Manager::*function)() operand of '*' must be a pointer

我该如何纠正呢?我正在学习的例子是:http://www.cplusplus.com/forum/beginner/6596/

Mar*_*ica 5

指向成员函数的指针(pmf)不是指针.让我再说一遍:

指向成员函数的指针不是指针.

要调用pmf,您必须为其提供要调用它的对象.你可能想要:

    (this->*function)();
Run Code Online (Sandbox Code Playgroud)

如果您有另一个obj正确类型的对象,您还可以使用:

    (obj.*function)();
Run Code Online (Sandbox Code Playgroud)