операторы — C ++ Pointer Object 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();

Как мне получить доступ к этому оператору в первом сценарии? Это вообще возможно?

1

Решение

Да, разыменяем указатель:

(*character)();

Или более многословно:

character->operator()();
3

Другие решения

Вы должны выполнить косвенное обращение через указатель, чтобы использовать объект, на который указывает указатель:

(*character)()
1

это указатель, вот почему:

character->(); или же (*character)() твои друзья.

0
По вопросам рекламы [email protected]