У меня проблема с использованием указателя на функцию в С++. Вот мой пример:
#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 С++ запрещает принимать адрес связанной функции-члена для формирования указатель на функцию-член. Сказать '& Амп; Foo:: привет
не может преобразовать 'void (foo::)()' в 'void()()' при назначении
Итак, я попробовал это следующим образом:
class bar
{
public:
void (*foo::funcP)();
};
Но теперь компилятор добавляет еще одно:
'foo' не был объявлен
Есть ли способ заставить его работать?
Заранее благодарим за предложения