Passer en paramètre un type défini dans une classe vers une fonction d'une autre

Johanboy Messages postés 8 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 23 juillet 2010 - 23 juil. 2010 à 10:50
cptpingu Messages postés 3839 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 29 juin 2024 - 23 juil. 2010 à 14:07
Bonjour à tous,


J'ai une question à laquelle je ne trouva pas de solution.

Je veux pouvoir passer un paramètre dans une fonction de la classe C un paramètre de type défini dans la classe B (cf exemple).
Comment faites-vous?

Merci.

class B: public A
{
    public:
      enum enScrollingMode
      {
         ScrollingNone=0,
         ScrollingLeft,
         ScrollingRight
      };

      enScrollingMode enCurrScrollingMode;
};

class C : public A
{
    public:
        void vSetScrollingMode(int8u i8uField,enScrollingMode CLabel::enCurrScrollingMode);
};


Johanboy

3 réponses

cptpingu Messages postés 3839 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 29 juin 2024 124
23 juil. 2010 à 11:58
Précise simplement le nom de la classe:
void vSetScrollingMode(int8u i8uField, B::enScrollingMode CLabel::enCurrScrollingMode);

________________________________________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Johanboy Messages postés 8 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 23 juillet 2010
23 juil. 2010 à 12:46
Merci pour ta réponse.

C'est ce que j'ai essayé, mais le compilo me dit classe B non déclarée. Or j'ai inclus le fichier header comprenant la classe ("B.h"). J'ai essayé un "class B;" aussi dans le fichier "C.cpp" mais rien à faire...

fichier "B.h":

class B: public A
{
    public:
      enum enScrollingMode
      {
         ScrollingNone=0,
         ScrollingLeft,
         ScrollingRight
      };

      enScrollingMode enCurrScrollingMode;
};

fichier "C.h":

class C : public A
{
    public:
        void vSetScrollingMode(int8u i8uField,B::enScrollingMode enCurrScrollingMode);
};



Johanboy
cptpingu Messages postés 3839 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 29 juin 2024 124
23 juil. 2010 à 14:07
J'arrive sans problème à compiler ceci, chez moi:
typedef int int8u;

class A
{
};

class B : public A
{
    public:
      enum enScrollingMode
      {
         ScrollingNone=0,
         ScrollingLeft,
         ScrollingRight
      };

      enScrollingMode enCurrScrollingMode;
};

class C : public A
{
public:
  void vSetScrollingMode(int8u i8uField, B::enScrollingMode enCurrScrollingMode)
  {
  }
};

int main()
{
  A a;
  B b;
  C c;

  c.vSetScrollingMode(4, B::ScrollingNone);

  return 0;
}


En mettant A, B et C dans des fichiers séparés, il n'y a aucune raison que ça ne fonctionne pas.

________________________________________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Rejoignez-nous