Classe non définie C2504

Signaler
Messages postés
28
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
14 septembre 2004
-
Messages postés
123
Date d'inscription
mercredi 27 août 2003
Statut
Membre
Dernière intervention
12 août 2008
-
Salut, mon pb est le suivant à la compilation:

-----------------------------------------------------------------
RegistrationMgr.h(23) : error C2504: 'AppMgr' : base class undefined

-----------------------------------------------------------------
voici la classe 'AppMgr' :

#ifndef APPMGR0_H
#define APPMGR0_H
#include "EndUser.h"
#include "SpokenToUser.h"
class EndUser;
class SpokenToUser;

class AppMgr{
public:
virtual bool createApplication(EndUser* eu, SpokenToUser* stu = 0);
virtual bool freeApplication(EndUser* eu, SpokenToUser* stu = 0);};
#endif //APPMGR0_H

#include "AppMgr.h"
bool AppMgr::createApplication(EndUser* myEndUser,SpokenToUser* stu){
return true;}
bool AppMgr::freeApplication(EndUser* user,SpokenToUser* stu){
return false;}

---------------------------------------------------------------

et maintenant plus interessant, ma classe "RegistrationMgr"

#ifndef REGMGR_H
#define REGMGR_H
#include "AppMgr.h"
#include <qptrlist.h>
#include "Registration.h"
class AppMgr;
class Registration;

class RegistrationMgr: virtual public AppMgr,QPtrList <Registration>{
public:
RegistrationMgr();
~RegistrationMgr();
...}

#include "RegistrationMgr.h"
RegistrationMgr::RegistrationMgr(){
...}
RegistrationMgr::~RegistrationMgr(){
...}

--------------------------------------------------------

Voila.
En fait, je ne comprends pas pourkoi la classe AppMgr n'est pas définie. Si vous avez une idée?

Merci d'avance

5 réponses

Messages postés
78
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
23 avril 2010

D'après moi tu n'as pas besoin de préciser le mot-clé virual lorsque tu déclares AppMgr dans ta declaration de RegistrationMgr.
Mets juste class RegistrationMgr : public AppMgr // etc...

Voila voila

Mess with the best, die like the rest
Messages postés
28
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
14 septembre 2004

ok, c'est vrai, mais, ce n'est pas ca. J'ai bien essayé 40 bidouilles, mais...
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Pourquoi réecrire
class AppMgr;
class Registration;
alors que ces classes sont définies dans un autre fichier?
Messages postés
28
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
14 septembre 2004

cela permet de déclarer la classe, mais de la définir par la suite. En fait, c'est pour faciliter la compilation. Déclaration de tout, puis définitions des classes.
Ici, c'est vrai que ce n'est pas utile car j'ai le "include". D'ailleurs, je les vire. (c'est une ruse de cowboy que j'ai vu dans QT)

En fait, le pb tourne bien autour de cela. Sous linux, la compilation me dit que le "type de classe de base est incomplet" pour la classe APPMGR. Ce que j'ai compris, c'est qu'au moment de compilé la classe RegistrationMgr, il ne trouve pas la compilation de la classe mère AppMgr.
Pourtant, la déclaration :
class RegistrationMgr: public AppMgr,
via le include devrait amener à compiler cette classe AppMgr, non?
Messages postés
123
Date d'inscription
mercredi 27 août 2003
Statut
Membre
Dernière intervention
12 août 2008
1
salut j'ai aussi un problem de meme type:


***********


class piko;


calss numb;


class numb{


piko *p;


}


class piko{


numb *p;


}
*************


erreur: class non definie piko <<<<<??? Merci pour votre aide
[s]schow/s[?]