Probleme URGENT (merci)

cs_MATHIS49 Messages postés 368 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 14 mai 2010 - 16 déc. 2005 à 23:57
cs_MATHIS49 Messages postés 368 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 14 mai 2010 - 17 déc. 2005 à 15:06
Bonjour , j'ai un gros probleme, j'aimerais savoir pourquoi jai un probleme avec ma methode virtuel lors de la compilation !
Mon script :

/////////////////////////////
class perso {
public:
perso();
string nom;
string prenom;
A * ptra;
};

perso::perso()
{
this->ptra = new B;
this->nom="dreo";
this->prenom="mathieu";
}
/////////////////////////////
class A
{
public:
virtual void methode(perso *);
};

void A::methode(perso * p)
{
cout<<"NOM : "<nom<<endl;
}
////////////////////////////////
class B : public A
{
public:
void methode(perso *);
};

void B::methode(perso * p)
{
cout<<"NOM : "

methode(toto);

system("PAUSE");
return EXIT_SUCCESS;
};

8 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 déc. 2005 à 00:22
Tu oublies de préciser quel est ton problème. Une dépendance circulaire?
0
cs_MATHIS49 Messages postés 368 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 14 mai 2010 1
17 déc. 2005 à 01:00
Merci de m'aider !

En fait jessai de faire mumuse avec une methode virtuel auquel jaccede via un pointeur qui est stocké dans un objet.
J'ai mis mes sources dans un rar , ca sera plus simple pour vous pour tester !
Ne vous inquietez pas le projet est tout petit !

Le rar se trouve sur :
http://angersbouge.com/test.rar

L'erreur de compilation étant :

In file included from a.h:4,
from main.cpp:6:
perso.h:13: error: ISO C++ forbids declaration of `A' with no type

perso.h:13: error: expected `;' before '*' token

In file included from main.cpp:6:
a.h:9: error: an anonymous union cannot have function members

a.h:12: error: abstract declarator `' used as declaration
a.h:12: error: namespace-scope anonymous aggregates must be static

In file included from main.cpp:7:
b.h:9: error: expected class-name before '{' token

b.h:9: error: an anonymous union cannot have function members
b.h:12: error: abstract declarator `' used as declaration
b.h:12: error: namespace-scope anonymous aggregates must be static

main.cpp: In function `int main()':
main.cpp:19: error: 'class perso' has no member named 'ptra'

MERCI ENCORE
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 déc. 2005 à 11:54
-Tu fais un #define A, puis ensuite un class A{...}
Ici, il va remplacer le A par rien, donc au lieu de #define A, mets plutot #define A_H par exemple
-Idem pour la classe B
-Dans perso.h, A n'est pas connu. Tu dois donc déclarer (seulement déclarer) la classe A, en ajoutant class A; avant class perso{...}
-Enfin dans perso.cpp, il te faut #include "b.h"

Avec ca, je compile et j'exécute sans problème
0
cs_MATHIS49 Messages postés 368 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 14 mai 2010 1
17 déc. 2005 à 13:11
Merci enormement ! j'ai pas trop compris le coup du define qui remplace le A, mais je pense que je connais pas assez le fonctionnement de define, je vais aller me documenter.
Merci beaucoup !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 déc. 2005 à 13:28
#define x y
définit x, et le remplace partout par y
#define x
définit x, et le remplace partout par rien. Donc ton class A{...};
devient un class {...};
C'est pour ca que le compilo te parle de "anonymous union"
0
cs_MATHIS49 Messages postés 368 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 14 mai 2010 1
17 déc. 2005 à 14:49
oui, mais javais marqué " #ifndef A ,#define A" ca veut pas dire que si A est pas defini on le defini par A ?
sinon tu mas donc conseillé de mettre #define A H ou #define A_H
?
Merci
Note : je débute en c++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 déc. 2005 à 14:56
#define A_H, ou n'importe quoi mais surtout pas A
Quand tu fais #define A, tu définis à, mais tu dis juste que A est défini (ca existe), mais ca ne vaut rien. Pour empêchez l'inclusion multiple par exemple ca suffit.
Fais donc exactement ce que je t'ai dit dit plus haut, et ca devrait aller
0
cs_MATHIS49 Messages postés 368 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 14 mai 2010 1
17 déc. 2005 à 15:06
merci enormement , grace à toi je rendrais peut etre mon projet a temps !
Merci encore , tu me sauves !
0
Rejoignez-nous