C ++指针对象编程器

时间:2012-09-24 23:30:05

标签: c++ operators functor

我很困惑为什么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();

如何在第一种情况下访问此运算符?它甚至可能吗?

3 个答案:

答案 0 :(得分:3)

是的,取消引用指针:

(*character)();

或者更详细地说:

character->operator()();

答案 1 :(得分:1)

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

(*character)()

答案 2 :(得分:0)

它是一个指针,这就是原因:

character->(); (*character)()是您的朋友。