Страницы

Поиск по вопросам

четверг, 2 мая 2019 г.

Указатель на функтор

У меня есть следующие классы:
class A { public: B* b; }
class B { public: double operator()(double val); }
Дальше я в какой-то момент пытаюсь вызвать класс B как функцию через указатель на класс A
a->b(val); //a - указатель на экземпляр класса A
При компиляции я получаю ошибку:
error: 'A::b' cannot be used as a function
Вопрос: как это исправить? Т.е. как использовать функторы по указателю?


Ответ

Можно и так:
a->b->operator()(val);
если a - указатель на A
Если же, как вы написали в вопросе, //a - экземпляр класса A, то тогда
(*a.b)(val); a.b->operator()(val);
Судя по вашему ответу на свой вопрос, вы все же ошиблись в самом вопросе, и a у вас - указатель на экземпляр, а не сам экземпляр...

Комментариев нет:

Отправить комментарий