我很困惑为什么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();
如何在第一种情况下访问此运算符?它甚至可能吗?
答案 0 :(得分:3)
是的,取消引用指针:
(*character)();
或者更详细地说:
character->operator()();
答案 1 :(得分:1)
您需要通过指针执行间接操作以使用指向对象:
(*character)()
答案 2 :(得分:0)
它是一个指针,这就是原因:
character->();
或(*character)()
是您的朋友。