Pointeur de fonction membre [Résolu]

Signaler
Messages postés
19
Date d'inscription
mercredi 5 mars 2003
Statut
Membre
Dernière intervention
23 août 2010
-
Messages postés
19
Date d'inscription
mercredi 5 mars 2003
Statut
Membre
Dernière intervention
23 août 2010
-
bonjour a tous,

je voudrai savoir comment on passe en paramètre d'une fonction membre une autre fonction membre d'une autre class déjà instanciée

ex:
class A
{
  private:
    int varA=12;

  public:
    int fonctionA
    {
      return varA;
    }
};
class B
{
  void fonctionB(void(A::*fonc))
  {
   cout<<fonc()<<endl;
  }
}
int main(int argc,char** argv)
{
  A *a = new A();
  B *b= new B()

  b.fonctionB(&a.fonctionA)
}

je ne sais pas si je suis bien claire
merci d'avance,

2 réponses

Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Il faut spécifier l'instance de classe au moment de l'appel de la fonction, et pas en initialisation du pointeur.

class A
{
private:
int varA;

public:
int fonctionA(void)
{
return varA;
}
};

typedef int(A::* pfa)(void);


class B
{
public:
void fonctionB(pfa fonc,A*a)
{
cout<<(a->*fonc)()<<endl;
}
};


int main(int argc,char** argv)
{
A *a = new A();
B *b= new B();

b->fonctionB(&A::fonctionA,a);
return 0;
}
Messages postés
19
Date d'inscription
mercredi 5 mars 2003
Statut
Membre
Dernière intervention
23 août 2010

C'est parfait ça fonctionne
Merci beaucoup !