begin process at 2012 05 30 15:49:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Maths

 > 

retourner la classe dans une de ses méthodes (bibliotheques SDL)


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

retourner la classe dans une de ses méthodes (bibliotheques SDL)

dimanche 30 janvier 2011 à 19:07:53 | retourner la classe dans une de ses méthodes (bibliotheques SDL)

BobZeFlyer

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 :

Personnage::~Personnage()
{
m_dictionnaire->retirerInfo(m_image);
delete m_image;
}

void Dictionnaire::retirerInfo(InfoImage *uneInfo) //Boucle jusqu'a trouvé l'adresse correspondante au paramètre
{
InfoImage *infoTmp(m_premierInfoImage), *infoComparaison;
//Test si la premiere carte est a supprimé
if (uneInfo == m_premierInfoImage)
{
infoTmp = m_premierInfoImage->getAdresseImgSuiv();
m_premierInfoImage = infoTmp;
}
else
{
//Boucle jusqu'à trouvé le paramètre dans le pointeur de l'info suivante
for(int i = 0; i < Dictionnaire::getNombreInfo(); i++)
{
infoTmp = infoComparaison->getAdresseImgSuiv();
if(infoComparaison == uneInfo)
{
InfoImage *infoNecessaire = NULL;
infoNecessaire = infoComparaison->getAdresseImgSuiv();
infoTmp->AllouerSuivant(infoNecessaire);
delete infoComparaison;
break;
}
infoTmp = infoComparaison;
}
}
infoTmp = infoComparaison = NULL;
delete infoTmp, infoComparaison;
m_nbElement--;
}

infoImmage* InfoImage::getAdresseImgSuiv()
{
return m_infoImageSuivante;
}

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.
lundi 31 janvier 2011 à 10:16:31 | Re : retourner la classe dans une de ses méthodes (bibliotheques SDL)

CptPingu

Administrateur CodeS-SourceS
Réponse acceptée !
Fait une "forward declaration", ou pré-déclaration en français.
Ex (avec la balise [code][ /code]):
Code C/C++ :
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/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
lundi 31 janvier 2011 à 19:43:24 | Re : retourner la classe dans une de ses méthodes (bibliotheques SDL)

BobZeFlyer

Plus de problème de compilation. Merci beaucoup pour ta réponse et pour tes conseilles qui me serviront dans un avenir très proche.


Cette discussion est classée dans : image, sdl, infoimage, infotmp, infocomparaison


Répondre à ce message

Sujets en rapport avec ce message

Lib SDL -> probleme d'images [ par zmc ] bonjour, je debute plus ou moins en SDL, et je n'ai pas réussi a afficher un sprites (animé ou non) sur une image de fond. Selon la méthode que j'empl TGALoader +SDL [ par Arnaud16022 ] HI!je voudrais juste savoir si il y a moyen de charger unne image avec le TGA Loader de funto, pour l'afficher a l'écran a l'aide de SDL_CreateRGBSurf [SDL] Alternation d'une image [ par hoxid ] Salut !Bon voila j'ai un probleme avec SDL :je veux par exemple faire un gars qui marche (image "bonome.bmp") et que cette image se change en "bonomeq Problème SDL [ par MATHIS49 ] Bonjour ! Je débute en C++ et en SDL , j'ai donc décortiqué un petit programme fait en SDL qui avait pour l'avantage d'être accessible au débutant : Probleme SDL_image , à l'aide [ par DarkSchen ] Bonjour,mon problème est que je n'arrive pas à configurer correctement SDL_imageProtocole suivi : je travaille sous Dev c++ 4.9.5 avec g++ comme compi SDL et Surface [ par Kangourou_Nomade ] Je voulais savoir si, en SDL, il était préférable de loader une image a partir d'un fichier au fur et a mesure du déroulement du jeu ou s'il vallait m probleme SDL et POO [ par darmoor ] voila je suis encore qu'un débutant dans la matière avec la POO et j'apprend a utiliser SDL j'ai fait un essai en affichant un image et avec unn SDL_ aidé moi svp [ par iliassh ] je veux de l'aide pour que j'ajoute a ce jeux une fonction qui permeté d'affiché des brique qui ce seron bliti quand la balle les touche je veux svp q SDL image et masque [ par Timidouveg ] Bonjour Je poste pour la première fois ici Je développe toutes sortes de petits programmes et aussi un projet de réalité virtuelle en C/C++ avec SDL/O Effacer une image avec SDL en C [ par flofloo ] slt tout le mondevoici mon probleme j'ai realiser un petit prog qui affiche une image a l'appui de la touche "x" et maintenant je voudrais faire le co


Nos sponsors


Sondage...

Comparez les prix

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,250 sec (4)

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