Pointeurs sur fonction entre class

zeGouky Messages postés 1 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 1 avril 2007 - 1 avril 2007 à 02:46
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 - 1 avril 2007 à 11:09
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

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
1 avril 2007 à 11:08
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);
        }
};
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
1 avril 2007 à 11:09
J'oublie l'initialisation:

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