Pointeur de fonction membre

Résolu
maximus4 Messages postés 19 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 23 août 2010 - 10 juin 2009 à 17:34
maximus4 Messages postés 19 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 23 août 2010 - 11 juin 2009 à 09:10
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

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
10 juin 2009 à 21:19
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;
}
3
maximus4 Messages postés 19 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 23 août 2010
11 juin 2009 à 09:10
C'est parfait ça fonctionne
Merci beaucoup !
0
Rejoignez-nous