En passant membre de pointeur de fonction de membre de l'objet en c++

J'ai un problème avec l'aide d'un pointeur de fonction en C++. Voici mon exemple:

#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;
}

Compilateur renvoie une erreur à testFoo.myBar.funcP = &testFoo.hello;:

ISO C++ forbids de prendre l'adresse d'un membre lié fonction permettant de former un
pointeur de fonction membre. Dire
"&foo::hello'

impossible de convertir de 'void (foo::)()' de 'void ()()' attribution

Alors j'ai essayé comme ceci:

class bar
{
public:
    void (*foo::funcP)();
};

Mais maintenant, le compilateur ajoute un de plus:

'foo' n'a pas été déclaré

Est-il un moyen de le faire fonctionner?

Merci d'avance pour les suggestions

InformationsquelleAutor Moomin | 2010-03-03