Страницы

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

понедельник, 24 февраля 2020 г.

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

#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)

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

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