Я не понимаю, почему 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();
Как мне получить доступ к этому оператору в первом сценарии? Это вообще возможно?
Да, разыменяем указатель:
(*character)();
Или более многословно:
character->operator()();
Вы должны выполнить косвенное обращение через указатель, чтобы использовать объект, на который указывает указатель:
(*character)()
это указатель, вот почему:
character->();
или же(*character)()
твои друзья.