@mrbbfst

Коимпилятор ругается на инициализацю ссылки на функцию как написать что бы не было ошибки?

есть класс. в public есть double (*dfActivate)(double);

в private определена double dfLineFunc(double)

в конструкторе this->dfActivate = &this->dfLineFunc;
дает ошибку
Ошибка C2276 &: недопустимая операция с выражением привязанной функции-члена support d:\newneural\main.cpp 19


если без &
this->dfActivate = this->dfLineFunc;
ошибка
Ошибка C3867 "neural_network_lib::Neuron::dfLineFunc": нестандартный синтаксис; используйте "&", чтобы создать указатель на член support d:\newneural\main.cpp 19

и
Ошибка C2440 =: невозможно преобразовать "double (__thiscall neural_network_lib::Neuron::* )(double)" в "neural_network_lib::pfdd" support d:\newneural\main.cpp 19

pfdd* это typedef double(*pfdd)(double);
  • Вопрос задан
  • 674 просмотра
Пригласить эксперта
Ответы на вопрос 1
Nipheris
@Nipheris Куратор тега C++
Вы не сможете сохранить указатель на функцию-член в переменной указателя на обычную функцию. Ваши варианты:
- сделать dfLineFunc статической/свободной функцией (что было бы логично для функции активации, неужели она у вас от состояния зависит?);
- сделать dfActive указателем на функцию-член и пользоваться им соответственно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы