#cpp
У меня есть следующие классы: 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 Вопрос: как это исправить? Т.е. как использовать функторы по указателю?
Ответы
Ответ 1
Можно и так: a->b->operator()(val); если a - указатель на A. Если же, как вы написали в вопросе, //a - экземпляр класса A, то тогда (*a.b)(val); a.b->operator()(val); Судя по вашему ответу на свой вопрос, вы все же ошиблись в самом вопросе, и a у вас - указатель на экземпляр, а не сам экземпляр...Ответ 2
В общем, чтобы компилировалось, надо явно разыменовать указатель a->b: (*(a->b))(val); //Вместо a->b(val)
Комментариев нет:
Отправить комментарий