У меня проблема с использованием указателя на функцию в C ++. Вот мой пример:
#include <iostream>
using namespace std;
class bar
{
public:
void (*funcP)();
};
class foo
{
public:
bar myBar;
void hello(){cout << "hello" << endl;};
};
void byebye()
{
cout << "bye" << endl;
}
int main()
{
foo testFoo;
testFoo.myBar.funcP = &byebye; //OK
testFoo.myBar.funcP = &testFoo.hello; //ERROR
return 0;
}
Компилятор возвращает ошибку на testFoo.myBar.funcP = &testFoo.hello;
:
ISO C ++ запрещает принимать адрес связанной функции-члена для формирования
указатель на функцию-член. Сказать
'& Foo :: привет'
не может преобразовать 'void (foo :: ) ()' в 'void () ()' в назначении
Итак, я попробовал это так:
class bar
{
public:
void (*foo::funcP)();
};
Но теперь компилятор добавляет еще один:
'foo' не был объявлен
Есть ли способ заставить его работать?
Заранее спасибо за предложения