#0 

28-06-2009 20:16:20

Kaworu
Petit nouveau
Date d'inscription: 12-05-2008
Messages: 6

Bonjour,

Actuellement je travaille sur un GROS projet Irrlicht, avec toute une hiérarchie de fichiers .h et .cpp sous l'environnement VS 2008 pro.
Mon problème vient des includes, j'ai jusque là fait en sorte d'éviter les erreurs du compilateur en les échangeant, en déclarant les classes en amont de celles qui les utilisent (Avec class Nom_De_La_Classe; , néanmoins ça ne fonctionne pas pour les classes héritées) ou encore en les mettant dans les fichiers .cpp ...

Les erreurs qui persistent sont souvent du genre :
- error C2061: erreur de syntaxe : identificateur 'nom_de_la_classe'
- error C2143: erreur de syntaxe : absence de ';' avant '*' (Avant les noms de classes dans les méthodes des fichiers .h, ceux ci n'étant apparemment pas reconnus malgré l'include)
- error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut (Surement pour la même raison que le précédent)

Bref, je suppose que ce n'était pas la bonne chose à faire, et aujourd'hui j'ai besoin d'utiliser un objet dans une classe, mais dès que j'ajoute l'include nécessaire, j'obtiens les deux dernieres erreurs ci dessus sur un autre fichier que celui qui a été modifié mais sur la classe concernée. (J'ajoute #include "ClasseZ.h" dans ClasseA.h, ClasseB.h va retourner les erreurs sur les instances de ClasseA)

Je souligne le fait que les erreurs ne viennent pas d'un ; manquant à la fin d'une classe, j'ai vérifié et celles-ci compilent pour l'instant correctement tant que je ne change pas l'ordre des includes et que je n'en ajoute pas... Mais plus moyen d'avancer même avec les classes déjà faites.
Il y a un #pragma once en haut de tous les fichiers .h également.


En gros, savez vous si il convient de respecter certaines règles dans l'encapsulation des includes ?

Merci d'avance ! wink

Hors ligne


#1 

29-06-2009 19:50:55

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

as-tu utilisé dans tes headers :
#ifdef _MA_CLASSE_
#define MA_CLASSE_

#endif

????


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#2 

01-07-2009 20:06:02

Kaworu
Petit nouveau
Date d'inscription: 12-05-2008
Messages: 6

J'ai utilisé les #pragma once. (Cela dit j'ai essayé avec ces en-têtes, même résultat)

Je ne pense pas que le problème vienne de là sinon les erreurs seraient du type classe déjà définie. smile

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
37 invités en ligne
Aucun membre connecté
RSS Feed