1

我对为什么 C++ 不允许您在指针上使用仿函数感到困惑。例如,如果我的班级是这样的:

class Character{


    public:
        Character();
        ~Character();
        void operator()() {cout << "HELLO WORLD" << endl;}//this is the functor operator

};

当我做这样的事情时,我收到一个错误,说我不能将字符调用为函数......

Character * character = new Character();

    character();

    delete character;

但这很好用:

Character character;
character();

在第一种情况下,我将如何访问该运算符?甚至可能吗?

4

3 回答 3

3

是的,取消引用指针:

(*character)();

或者更详细地说:

character->operator()();
于 2012-09-24T23:31:38.393 回答
1

您需要通过指针执行间接以使用指向的对象:

(*character)()
于 2012-09-24T23:31:21.343 回答
0

这是一个指针,这就是为什么:

character->();或者 (*character)()是你的朋友。

于 2012-09-24T23:32:50.927 回答