[C++] Constructeur et héritage

Résolu/Fermé
Niidhogg Messages postés 42 Date d'inscription dimanche 8 février 2009 Statut Membre Dernière intervention 11 octobre 2015 - 20 mars 2009 à 23:00
Niidhogg Messages postés 42 Date d'inscription dimanche 8 février 2009 Statut Membre Dernière intervention 11 octobre 2015 - 21 mars 2009 à 20:32
Bonjour,

J'ai un gros beug et je sais pas trop pourquoi et quesqu'il me veut ..

J'ai screené les beug que m'affiche le compileur: http://img12.imageshack.us/img12/2161/beug.png

Et voila la source:

perso.h:

class Objet
{

public:
Objet();
Objet(std::string nom, SDL_Surface *mign, std::string descrip, int ID); //Constructeur
~Objet();//Destructeur

//GET + AFF
std::string get_nom() const;
void aff_mign(SDL_Rect position) const;
std::string get_description() const;
int get_id() const;

private:
std::string m_nom; //Nom de l'objet
SDL_Surface *m_mign; //Mignature du perso
std::string m_description; //Description de l'objet
int m_id; //ID de l'objet

};

class Arme : public Objet
{

public:
Arme();
Arme(std::string nom, SDL_Surface *mign, std::string descrip, int ID);

//GET
int get_att() const;

private:
int m_att;

};

class Bouclier : public Objet
{

public:
Bouclier(std::string nom, SDL_Surface *mign, std::string descrip, int ID);

//GET
int get_def() const;
bool get_acti() const;

protected:
int m_def;
bool m_acti;

};

class Armure : public Objet
{

public:
Armure(std::string nom, SDL_Surface *mign, std::string descrip, int ID);

//GET
int get_def() const;

private:
int m_def;

};

class Perso
{

public:

//* ! *//
Perso(std::string nom, long vie, long magie, std::string type, SDL_Surface *perso[8], SDL_Surface *ecranP); //Constructeur
~Perso(); //Destructeur

//GET
std::string get_nom() const;
std::string get_camp() const;
int get_element() const;
long get_vie() const;
long get_vieAct() const;
long get_mag() const;
long get_magAct() const;
long get_mon() const;
std::string get_type() const;
SDL_Rect get_position() const;

//AFF
void aff_nom(SDL_Rect position) const;
void aff_camp(SDL_Rect position) const;
void aff_element(SDL_Rect position) const;
void aff_vie(SDL_Rect position) const;
void aff_vieAct(SDL_Rect position) const;
void aff_mag(SDL_Rect position) const;
void aff_magAct(SDL_Rect position) const;
void aff_perso(SDL_Rect position) const;
void aff_mign(SDL_Rect position) const;
void aff_mon(SDL_Rect position) const;
void aff_type(SDL_Rect position) const;
void aff_arme(SDL_Rect position) const;
void aff_bouclier(SDL_Rect position) const;
void aff_armure(SDL_Rect position) const;
void aff_persoById(SDL_Rect position, int orientation) const;

//LIST
void list_objet() const;

//ADD
void add_nom(std::string nom);
void add_camp(std::string camp);
void add_element(int element);
void add_perso(SDL_Surface perso); //Change la texture actuel
void add_arme(Arme arme);
void add_bouclier(Bouclier bouclier);
void add_armure(Armure armure);
void add_objet(Objet objet);
void add_position(SDL_Rect position);

//Mouvement
void deplacer();
void courir();

//Attaque
void attaquer(Perso perso);
void attaquerSpec(Perso perso, long mag);
void degat(long dega, long poison = 0, long mouv = 0, long degMag = 0);
void parer();

//Commerce
void achat(Objet objet, long prix);
void vendre(Objet objet, long prix);

private:

std::string m_nom; //Le nom
std::string m_camp; //Le camp, la guilde ..
int m_element; //L'element ..
long m_vie; //La vie Total
long m_vieAct; //La vie restante
long m_mag; //La magie Total
long m_magAct; //La magie restante
SDL_Surface *m_perso[8]; //TextureS du perso
SDL_Surface *m_persoAct; //Texture du perso actuel
SDL_Surface *m_mign; //Mignature du perso
long m_mon; //Fric, tune, money, blé, ..
std::string m_type; //Type de perso
Arme m_arme; //L'arme de type arme ..
Bouclier m_bouclier; //Bouclier
Armure m_armure; // C'est clair ..
Objet m_objet; //Les objets, dans un tableau de type objet ..
SDL_Rect m_position; //Position du perso
SDL_Surface *ecran;

};

#endif


perso.cpp:

#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <SDL/SDL_ttf.h>
#include <string>
#include "lib.h"
#include "perso.h"

using namespace std;

//* !CLASS OBJET! *//

Objet::Objet()
{



}

Objet::Objet(string nom, SDL_Surface *mign, string descrip, int ID)
{

m_nom = nom;
*m_mign = *mign;
m_description = descrip;
m_id = ID;

}

Objet::~Objet()
{

SDL_FreeSurface(m_mign);

}

//* !CLASS ARME! *//

Arme::Arme()
{



}

Arme::Arme(string nom, SDL_Surface *mign, string descrip, int ID)
{

Objet(nom, *mign, descrip, ID);

}

//* !CLASS BOUCLIER! *//

Bouclier::Bouclier(string nom, SDL_Surface *mign, string descrip, int ID)
{

Objet::Objet(nom, *mign, descrip, ID);

}

//* !CLASS ARMURE! *//

Armure::Armure(string nom, SDL_Surface *mign, string descrip, int ID)
{

Objet::Objet(nom, *mign, descrip, ID);

}

//* !CLASS PERSO! *//
Perso::Perso(string nom, long vie, long magie, string type, SDL_Surface *perso[8], SDL_Surface *ecranP)
{

m_nom = nom;
m_vie = vie;
m_mag = magie;
m_type = type;
*m_perso = *perso;
*ecran = *ecranP;

}

Perso::~Perso()
{

for(int i=0;i<=8;i++)
{

SDL_FreeSurface(m_perso[i]);

}

SDL_FreeSurface(m_persoAct);

}


Bon dans perso.cpp j'ai suprimer beaucoup de methode qui serve a rien ici ...
Suis fatigué alors je vais me coucher .. Je re demain, j'espere avec des réponses :p Merci a vous !

3 réponses

Up !
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
21 mars 2009 à 11:42
Salut,
Les appels de fonctions ne correspondent pas.
Arme::Arme(string nom, SDL_Surface *mign, string descrip, int ID)
{

Objet(nom, *mign, descrip, ID);

} 

T'appelles donc Objet(...,SDL_Surface,...), méthode qui n'existe pas.
Appelle plutôt : Objet(nom, mign, descrip, ID);

Corrige toutes les erreurs similaires dans chacune des classes. Recompile et dis nous si c'est mieux.
Cdlt
0
Niidhogg Messages postés 42 Date d'inscription dimanche 8 février 2009 Statut Membre Dernière intervention 11 octobre 2015 3
21 mars 2009 à 20:32
Merci :p

Me restais plus que quelque beug que j'ai corriger par moi même ;)
0