【发布时间】:2016-02-09 22:39:33
【问题描述】:
这是我所拥有的:
类 PostfixCalculator,具有公共成员方法:
class PostfixCalculator
{
public:
PostfixCalculator();
int top();
int popTop();
void pushNum(int);
void add();
void minus();
void multiply();
void divide();
void negate();
bool empty();
void pushSymbol(string);
当我尝试通过指向成员函数的指针调用成员函数时,我尝试了类似以下的方法(我知道该方法没有多大意义,它只是一个测试):
void PostfixCalculator::pushSymbol(string str)
{
func f = &PostfixCalculator::add;
this.*(f)();
}
但是,我收到以下编译器错误:
> postfixCalculator.cpp:84:12: error: called object type 'func' (aka
> 'void (PostfixCalculator::*)()') is not a function or function pointer
> this.*(f)();
> ~~~^ 1 error generated.
我在fedora linux下使用clang++编译我的程序。
【问题讨论】:
-
你用的是什么
func? -
离题:看看std::bind和std::function。它们自动化并隐藏了大部分令人讨厌的东西。
标签: c++ pointers member-function-pointers