field ... has incomplete type

cs_Yossi Messages postés 40 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 5 septembre 2006 - 5 juil. 2005 à 20:08
cs_Yossi Messages postés 40 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 5 septembre 2006 - 5 juil. 2005 à 20:47
Bonjour,



j'ai deux classes :

bdd et requete.



j'ai fait un

#include "bdd.h" dans la définition de la classe requete (et apres le #indef).

je déclare un objet de type bdd dans la section protected de la classe requete et de cette manière.

bdd base1;

Et la j'ai une erreur

field `base1' has incomplete type
Pourriez vous m'expliquer le pb?







en gros voila:



fichier requete.h



#ifndef REQUETE_H

#define REQUETE_H

using namespace std;



class requete

{friend class bdd;

friend class table;

friend class champ;

private:

...

protected:



bdd base1;





public:

// class constructor

requete();

requete(const requete & );

.....



};



#endif




fichier bdd.h



class bdd

{friend class requete;

string nom_base;

...

protected:

....



public:

// class constructor

bdd();

bdd(const bdd & );

bdd &operator=(const bdd&);

// class destructor

~bdd();



};



#endif // BDD_H

3 réponses

cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
5 juil. 2005 à 20:12
Bé je sais pas si ta oublier dans bdd.h mais il manque un #ifndef et un #define
ensuite dans requete.h il manque le #include "bdd.h" je suppose que c'est juste un oublie mais bon....


void Aurevoir( void ); //Bonne journée
0
cs_Yossi Messages postés 40 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 5 septembre 2006
5 juil. 2005 à 20:19
en fait je l ai deja mis. J'ai enlevé tous les trucs qui étaient "inutiles" pour faciliter la visibilité.
0
cs_Yossi Messages postés 40 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 5 septembre 2006
5 juil. 2005 à 20:47
voici le code complet

// Class automatically generated by Dev-C++ New Class wizard

requete.h



#include "bdd.h"

#ifndef REQUETE_H

#define REQUETE_H



#include <string>

#include <cstring>

#include "machaine.h"

#include <map>

#include <vector>

#include "table.h"

#include "champ.h"

using namespace std;



class requete

{friend class bdd;

friend class table;

friend class champ;

private:

string requete_sql;

int parsingCreateDataBase(string);

int parsingCreateTable(string);

int parsingSelect(string);

int parsingUpdate(string);

int parsingInsert(string);

int parsingDelete(string);

string getRequeteSql(void) const;



//map<string,float> tableau_erreurs;

protected:

int code_erreur;

bdd base1;





public:

// class constructor

requete();

requete(const requete & );

requete(string);



requete(char *);



// class destructor

virtual ~requete();

int setRequete(char *);

int setRequete(string);



const int parsingRequete();



const int getCodeErreur(void);

int dropTable(const table & );

int alterTable(const table & );

string getRequeteSql(void);

};

#endif // REQUETE_H



// Class automatically generated by Dev-C++ New Class wizard





bdd.h



#ifndef BDD_H

#define BDD_H

#include "requete.h"

//#include "utilisateur.h"

#include <string>

#include

#include "machaine.h"

#include <vector>

using namespace std;





class bdd

{friend class requete;

string nom_base;

//utilisateur user;

//bool utilisateur_initialise, base_inititialisee;

bool test_existence(string);//dossier existe?



int execution(void);



protected:

int createDatabase( char *);

int createDatabase(string );

public:

// class constructor

bdd();

bdd(const bdd & );

bdd &operator=(const bdd&);

// class destructor

~bdd();

string getNom(void ) const;

//int setBase(string );

int setBase(char * );

int setBase(string );

int executer( string ) ;

};



#endif // BDD_H
0