Pointeurs sur fonction entre class

Signaler
Messages postés
1
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
1 avril 2007
-
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
-
Bonjour,

voilà j'ai un petit soucis avec les pointeurs de fonctions, je m'explique j'ai une class A et une class B tel que :

class A {
     int  mafunction();
};

class B {
    int (*mafunction)();

    B    *maclassB;
};

au moment du constructeur j'ai quelque chose comme :

maclassB = new B;
mafunction = &maclassB->mafunction;

Donc grosso modo je voudrai qu'un pointeur de fonction se trouvant dans la class B pointe sur une fonction de la class A, bien entendu la class B contient une var du type class A.

J'espère que je suis claire :-) J'arrive sans soucis à faire des pointeurs de fonctions sur des fonctions qui sont dans la même class mais pas de class différentes, si quelqu'un peux m'aider ça serait vraiment apprécié.

Merci

- - -
Amiga is not dead

2 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
class A
{
    public:
    int Function(int value) { std::cout << value << std::endl; return value; }
};

class B
{
    typedef int (A::*FUNCTION)(int);

    A * m_pInstance;
    FUNCTION m_pFunction;

    public:
        // Constructeurs
        B(A * _ptr, FUNCTION _function):
            m_pInstance(_ptr), m_pFunction(_function) {}
           
        void Call()
        {
            (m_pInstance->*m_pFunction)(10);
        }
};
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
J'oublie l'initialisation:

int main()
{
    A objA;
    B objB(&objA, &A::Function);
   
    objB.Call();
   
    system("PAUSE");
   
    return 0;
}