У меня есть следующие классы:
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 у вас - указатель на экземпляр, а не сам экземпляр...
Комментариев нет:
Отправить комментарий