Подтвердить что ты не робот

Вызов перегруженного оператора() из указателя объекта

Рассмотрим следующее:

class MyClass {
public:
   int operator ()(int a, int b);
};

Если у вас есть:

MyClass* m = new MyClass();

Я хочу получить доступ к методу operator(), чтобы я мог:

(*m)(1,2);

Но могу ли я сделать это?

m->(1,2);
4b9b3361

Ответ 1

Не с этим синтаксисом, но вы можете сделать

 m->operator()(1,2);

Ответ 2

Если вы не измените m (на что он указывает), вы можете заменить (*m) ссылкой:

MyClass *m = new MyClass();
MyClass &r = *m;
r(1, 2);

Подробнее см. этот ответ.