begin process at 2012 05 30 00:53:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Ordre de compilation des classes


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Ordre de compilation des classes

lundi 5 juillet 2004 à 14:59:23 | Ordre de compilation des classes

9sber

Comment s'assurer qu'une classe est compilée avant une autre?

Mon, pb est le suivant.
Je suis sous VC++. J'ai une classe "R" qui hérite d'une classe "A". mais à la compilation de la classe "R", mon compilo n'arrive pas à trouver le compilé de la classe "A", malgrè le include "A.h".

R.h : error C2504: 'A' : base class undefined

Lorsque je remplace entièrement le contenu de ces deux classes (à part l'héritage: class R:public A{...} ), l'erreur reste.

Need Any Help
Thank u
lundi 5 juillet 2004 à 19:09:29 | Re : Ordre de compilation des classes

cosmobob

mets #include "A.h" dans le R.h ...
'R.h : error C2504: 'A' : base class undefined' -> on voit bien que c'est ds R.h que la classe A est inconnue.
a+ ;)
lundi 5 juillet 2004 à 19:40:53 | Re : Ordre de compilation des classes

9sber

Le #include y est déjà!
Le trucs, c'est que ça marchait avant.
Je n'ai apporté des modifs... pas mal.
Ca marche plus.
J'ai restauré l'ancienne version. Ca marche.
J'ai réintéger les classes A.h et R.h de l'ancienne version dans les nouvelles. Re, error C2504.
Je change le projet de dossier. Re same error.
Sous linux, ça compile bien.
Donc pour moi, l'erreur vient du complateur cl- de VC++6, je ne voit que cela?

Etes vous d'accord avec mon interprétation ou avez-vous une solution à mon pb?

C'est en résolvant les problèmes les plus tordus que l'on progresse
mardi 6 juillet 2004 à 02:42:15 | Re : Ordre de compilation des classes

cosmobob

ben non jpense pas mais bon...
fais build -> clean, et re essaie de compiler on sait jamais...
sinon copie colle ici le code de tes 4 fichiers (A.h, A.cpp, R.h et R.cpp) on va voir.
mardi 6 juillet 2004 à 11:13:56 | Re : Ordre de compilation des classes

9sber

build->clean, négatif.
so:


A.h
#ifndef A_H
#define A_H

#include "EU.h"
#include "STU.h"
#include "AT.h"

class EU;
class STU;
class AT;

//generic class for
class A{

public:
A();
~A();
virtual bool createAT(EUr* eu, STU* stu);
virtual bool freeAT(EU* eu, STU* stu);
virtual AT* find(EU* eu, STU* stu);
};
#endif //A_H



A.cpp
#include "A.h"

A::A(){}
A::~A(){}

bool A::createAT(EU* eu, STU* stu){
return false;}

bool A::freeAT(EU* eu, STU* stu){
return false;}

AT* A::find(EU* eu, STU* stu){
return NULL;}



R.h
#ifndef R_H
#define R_H

#include "A.h"
#include <qptrlist.h>
#include "AT.h"

class A;
class AT;
class EU;

class R: public QObject,public A,QPtrList <AT>{
Q_OBJECT
public:
R();
~R();

bool createAT(EU* eu, STU* stu);
bool freeAT(EU* eu, STU* stu);
AT* find(EU* eu, STU* stu);
};
#endif//R_H



R.cpp
#include "R.h"

R::R(){
setAutoDelete(true);}

R::~R(){}

bool R::createAT(EU* eu,STU* stu){
if((eu->name!=NULL)&&((eu->name!=NULL)){
AT *at0 = new AT(eu,stu)
append(at0);
return true;}
else return false}

bool R::freeAT(EU* eu, STU* stu){
AT* at0=0;
for(uint i=0;i<count();i++){
at0=at(i);
if(at0->eu->name=eu->name)&&(at0->stu->name=stu->name){
remove(at0);
return true;}
return false;}


AT* R::find(EU* eu, STU* stu){
AT* at0=0;
for(uint i=0;i<count();i++){
at0=at(i);
if(at0->eu->name=eu->name)&&(at0->stu->name=stu->name)
return at0;
return NULL;}





Voilà

Pour le moment, les classes EU et STU n'ont pour variables chacune qu'un QString, et la classe AT n'a elle qu'un EU et un STU.


mardi 6 juillet 2004 à 15:48:57 | Re : Ordre de compilation des classes

cosmobob

class R: public QObject,public A,QPtrList <AT>{
Q_OBJECT

c'est koi ta macro Q_OBJECT? essaie d'enlever la ligne la vu que bon... peut etre erreur de syntaxe ds le R.h qui te met une erreur qui n'a pas trop de lien.
sinon jvois pas trop trop ;)
mardi 6 juillet 2004 à 15:53:06 | Re : Ordre de compilation des classes

cosmobob

essaie d'enlever les déclarations

class A;
class AT;
class EU;

dans le R.h. ces classes ont été déclarées dans les autres .h.
comme ta classe R hérite de plsrs de ces classes, mieux vaut que le compilateur prenne les définitions de ces classes avec leurs membres.
mardi 6 juillet 2004 à 17:18:14 | Re : Ordre de compilation des classes

9sber

Ok, merci à toi cosmobob, mais j'ai résolu mon pb.
Ca ne venait en fait pas de là.

J'ai une autre classe UA qui est mon menu et dans laquelle j'avais mis:
#include "A.h"
#include "R.h"

Et mon erreur apparaissait lors de l'inclusion de R.h ici.
En la supprimant et en la remplaçant par:
#include "A.h"
class R;

ca fonctionne. Je ne comprends toujours pas pourkoi. Enfin bon. Merci quand même.


Cette discussion est classée dans : ordre, class, compilation, classe, classes


Répondre à ce message

Sujets en rapport avec ce message

classe et agregation... [ par Clonk ] bonjour,j'utilise plusieurs classes ayant des agregations (sous Borland).Disons en gros que si on a :class personne{private:int age;public:void affich liste chaînée et classes [ par yeager ] Bonjour!J'ai programmé pendant deux ans en C et actuellement j'étudie le C++. Pour moi une classe est l'équivalent d'une structure en plus évolué (hér template [ par ifren ] salutje veux utilise une classe D utilisant une variable qui peut etre double ou string, je deirve de cette dernier deux autre class Dnum et Dstrpour pb classes avec tableau [ par JediMaster ] je voudrais crée une classe comme celle ci avec un tableau qui aurit sa taille qui varirais selon l'objet j' ai donc fait un construteurclass classe{ CwinThread urgent [ par langedechu ] Bonjour,J ai un prob avce la classe CWinThread (je vais cracker si je n arrive pas le résoudre).Bon je m'explique : j ai creer une la classe : class c probleme sur les class [ par JRB ] g trouve un cour sur les applications reseaux mais il manque des explications si quelqu'un pourrait me les apporrtais sa serais super je cherche a ajo Problème "général" avec Direct3D, HELP ! [ par ProGamer ] J'ai commencé une application Direct3D. Elle était constituée d'une classe principale qui contenait l'objet LPDIRECT3D8. Tout marchait bien. Ensuite, INSTANCIER UNE CLASSE D'UNE DLL [ par KL ] Bonjour,J'ai un enorme problème !J'ai créé une DLL avec des classes dedansMaintenant je veux pouvoir importer ces classes dans un prog Win32 et pouvoi Constructeur sur un tableau de classes [ par Supo ] Lorsque je crée un tableau de classe, disons avecnomdelaclasse instance[10];et que j'ai un constructeur pour cette classe, comment je fait pour donner petit pb de classe~~ [ par lerilcy ] Bijour a tous... J'ai declare une classe "CBloc" comme il faut (enfin je pense)class CBloc{...}et dans le code des procedures (bloc.cpp): le compilate


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales