Asaturne
Messages postés6Date d'inscriptionlundi 15 septembre 2003StatutMembreDernière intervention22 mars 2005
-
7 mars 2005 à 20:24
Asaturne
Messages postés6Date d'inscriptionlundi 15 septembre 2003StatutMembreDernière intervention22 mars 2005
-
8 mars 2005 à 17:28
Voila je suis etudiant en info et je suis actuellement en stage dans une univeriste pour obtenir mon diplome.
Etant donnee la formation que j ai suivie (Merci IUT montpellier), on ne m a pas appris le c++ et je l apprend dans le meme temps que je devellope une application. Cela fais maintenant deux jours que je bloque sur ce probleme s'il y avait une ame charitable pour m'aider je lui serais eternellement reconnaissant.
L'application que je dois develloper consiste a poser des waypoint dans un niveau en 3d le tout a l aide d'un "dropper". Le moteur utilise et un moteur propre a l'universite mais je pense qu il n est pas necessaire de le detailler pour resoudre mon probleme.
Tout d'abord voici la classe Dropper.
#include <TL-Engine.h> // TL-Engine include file and namespace
using namespace tle;
Et voici la classe Waypoint (contenu dans les fichier Waypoint2.*)
#include <TL-Engine.h> // TL-Engine include file and namespace
using namespace tle;
#include <strstream>
using namespace std;
#include "Dropper.h"
#include "Waypoint2.h"
while (bck)
{
char text[100];
ostrstream textOut( text, 100 );
textOut << "X:" << bck->GetX(); // works like cout, but the output will
textOut << "Y:" << bck->GetY(); // fill a string instead of the console.
textOut << "Z:" << bck->GetZ(); // Use the string stream exactly like
textOut << '\0'; // cout, but remember the final '\0'
engine->SetWindowCaption( text );
textOut << "X:" << wpt->GetX(); // works like cout, but the output will
textOut << "Y:" << wpt->GetY(); // fill a string instead of the console.
textOut << "Z:" << wpt->GetZ(); // Use the string stream exactly like
textOut << '\0';
engine->SetWindowCaption( text );
return wpt;
}
Lors de la compilation de Dropper.cpp voici la liste des erreurs que visual c++ 6 me donne :
f:\project\essai2\dropper.h(42) : error C2143: syntax error : missing ';' before '*'
f:\project\essai2\dropper.h(42) : error C2501: 'Waypoint' : missing storage-class or type specifiers
f:\project\essai2\dropper.h(42) : error C2061: syntax error : identifier 'Waypoint'
f:\project\essai2\dropper.h(42) : error C2501: 'DropWaypoint' : missing storage-class or type specifiers
f:\project\essai2\dropper.cpp(64) : error C2511: 'DropWaypoint' : overloaded member function 'class Waypoint *(class tle::I3DEngine *,class Waypoint *)' not found in 'Dropper'
Est ce que quelqu'un peut m expliquer et me dire ou est situe mon probleme et comment le resoudre ?
P.S : desole pour l absence d accent ... foutus claviers britanniques, et de la longueur du post
estelledany
Messages postés13Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention 8 mars 2005 8 mars 2005 à 12:03
Euh, d'après ton code, tu fait un #include "Waypoint2.h" dans le fichier Waypoint2.h, il faut l'enlever sinon ca fait une définition circulaire et le compilo s'y pert !
Ensuite, c'est une bonne idée de commencer tout tes fichier .h par :
#pragma once
ou si tu utilise pas visual studio, encadre la totalité de tes fichiers .h par :
#ifndef LE_NOM_DU_FICHIER_H_INCLUDED
#define LE_NOM_DU_FICHIER_H_INCLUDED
// ici le source de ton fichier .h
#endif
Sinon, j'ai aussi remarqué que dans Waypoint2.h, tu fait #include "Dropper.h" et dans Dropper.h, tu fais (ou plutot devrait faire) #inlcude "Waypoint2.h".....
Même principe, ca fait une définition circulaire !!!!
Donc, à mon sens, voilà le code tel qu'il devrait être réellement :)
Il commence par :
#include "Waypoint2.h"
et ensuite, je pense que ton code est bon, donc tu peux le garder tel quel !
Pour explication, tu utilise Dropper dans Waypoint, et inversement.... Le compilo s'y retrouve plus car t'as pas mis de déclaration anticipée.
Conséquence, il considère que les classes existent pas (ou sont mal déclarées...)
estelledany
Messages postés13Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention 8 mars 2005 7 mars 2005 à 22:54
Bonjour,
Je ne sais pas si ça vient de là mais peut-être faut-il mettre #include "Waypoint.h"dans la classe Dropper car tu utilise un pointeur sur un objet de type waypoint.
Asaturne
Messages postés6Date d'inscriptionlundi 15 septembre 2003StatutMembreDernière intervention22 mars 2005 8 mars 2005 à 11:31
J 'avais mis le "#include "Waypoint2.h" dans l'implementation et non pas dans le header, j'ai effectuer la modification et maintenant voici les erreurs que j'obtiens ...
f:\project\essai2\waypoint2.h(31) : error C2061: syntax error : identifier 'Dropper'
f:\project\essai2\waypoint2.h(40) : error C2629: unexpected 'class Waypoint ('
f:\project\essai2\waypoint2.h(40) : error C2238: unexpected token(s) preceding ';'
f:\project\essai2\dropper.cpp(65) : error C2660: 'Insert' : function does not take 2 parameters