#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)
Комментариев нет:
Отправить комментарий