cs_BobZeFlyer
Messages postés6Date d'inscriptionlundi 24 janvier 2011StatutMembreDernière intervention15 août 2011
-
30 janv. 2011 à 19:07
cs_BobZeFlyer
Messages postés6Date d'inscriptionlundi 24 janvier 2011StatutMembreDernière intervention15 août 2011
-
31 janv. 2011 à 19:43
Bonjour à tous,
c'est mon premier message sur le forum, soyer indulgent svp pour toutes erreur ou répétitions de post.
Etudiant, je suis actuellement en cour de codage d'un jeux 2D (pour épreuve de BTS) avec la SDL en POO et je voudrais retourner avec une méthode un objet de sa propre classe. Je m'explique un peu mieux :
voici les fichiers composant mon projet (version simplifié ):
main.cpp
image.cpp & .h
class Image
{
public:
...
private:
SDL_Surface *m_image; //'objet' de la SDL permettant de gérer une image
SDL_Rect m_position; //'objet' de la SDL permettant de gérer la position à l'écran
};
imageInfo.cpp & .h
class InfoImage // destiné à faire un tableau dynamique d'objet 'Image' codé à la manière du langage C
{
public:
InfoImage *getAdresseImgSuiv()
...
private:
Image *m_image;
InfoImage *m_infoImageSuivante;
};
dictionnaire.cpp & .h
class Dictionnaire //Destiné à raffraichir toutes les surfaces du tableau dynamique d''infoImage'
{
public:
void retirerInfo(InfoImage *uneInfo);
...
private:
InfoImage *m_premierInfoImage;
InfoImage *m_dernierInfoImage;
int m_nbElement;
};
personnage.cpp & .h
class Personnage
{
public:
~Personnage();
....
private:
int m_vie;
InfoImage *m_image;
Dictionnaire *m_dictionnaire;
};
voici le problème dans l'ordre de la pile d'appel :
Le compilateur ne veut pas compiler, il ne connait pas l'objet 'infoImage' lorsqu'il compile la méthode 'infoImage* getAdresseImageSuiv()'. Connaitriez vous une méthode pour prédéfinir la classe ou autre.
Certaines personnes me diront que c'est pas la bonne solution de faire un tableau dynamique d'objet en C++, mais j'ai appris cette manière l'an dernier en cour de C, cela justifie mon choix. Mais je suis ouvert à toutes solutions et critiques sur cette méthode en C++.
Merci pour vos réponses.
PS: je vois dans l'aperçu que mon code n'est pas indenté, je ne sais pas comment on fait pr introduire du code correctement.
A voir également:
Retourner la classe dans une de ses méthodes (bibliotheques SDL)
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 31 janv. 2011 à 10:16
Fait une "forward declaration", ou pré-déclaration en français.
Ex (avec la balise
[ /code]):
[code=cpp]
class InfoImage; // Pré-déclaration
class InfoImage
{
InfoImage* getAdresseImageSuiv();
};
Si tu cherchais à avoir une liste chaînée, un simple std::list aurait suffit :)
Pour dictionnaire, une std::map est son équivalent.
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question