在成员函数上调用函数指针
Calling a function pointer on a member function
我是 C++ 的新手(Java 年后)。
我正在尝试使用函数指针指向我的 class 的成员函数,如下所示:
class MyClass
{
public:
MyClass();
void foo();
void bar();
};
MyClass::MyClass(){}
void MyClass::bar(){}
void MyClass::foo()
{
void (MyClass::*myMethod)();
myMethod = &MyClass::bar;
//-----THIS IS THE LINE WITH PROBLEM-----------
myMethod();
}
然而,编译失败:
test.cpp: In member function ‘void MyClass::foo()’:
test.cpp:22:14: error: must use ‘.*’ or ‘->*’ to call pointer-to-member function in ‘myMethod (...)’, e.g. ‘(... ->* myMethod) (...)’
myMethod();
^
我一直在尝试各种 *、& 字符的组合,并在谷歌上搜索解决方案,但无法正常工作。
有什么想法吗?
myMethod
是一个成员函数,因此您需要在它所属的 class 的实例上调用它。由于您已经在成员函数中,因此可以使用 this
:
(this->*myMethod)()
我是 C++ 的新手(Java 年后)。 我正在尝试使用函数指针指向我的 class 的成员函数,如下所示:
class MyClass
{
public:
MyClass();
void foo();
void bar();
};
MyClass::MyClass(){}
void MyClass::bar(){}
void MyClass::foo()
{
void (MyClass::*myMethod)();
myMethod = &MyClass::bar;
//-----THIS IS THE LINE WITH PROBLEM-----------
myMethod();
}
然而,编译失败:
test.cpp: In member function ‘void MyClass::foo()’:
test.cpp:22:14: error: must use ‘.*’ or ‘->*’ to call pointer-to-member function in ‘myMethod (...)’, e.g. ‘(... ->* myMethod) (...)’
myMethod();
^
我一直在尝试各种 *、& 字符的组合,并在谷歌上搜索解决方案,但无法正常工作。
有什么想法吗?
myMethod
是一个成员函数,因此您需要在它所属的 class 的实例上调用它。由于您已经在成员函数中,因此可以使用 this
:
(this->*myMethod)()