Rechercher : dans
Par :

[C++] Constructeur et héritage

Dernière réponse le 21 mar 2009 à 20:32:52 Niidhogg, le 20 mar 2009 à 23:00:32 
 Signaler ce message aux modérateurs

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 !

Configuration: Windows XP
Firefox 3.0.7

Meilleures réponses pour « [C++] Constructeur et héritage » dans :
Les constructeurs et les destructeurs en langage C++ Voir La notion de constructeur Le constructeur est la fonction membre appelée automatiquement lors de la création d'un objet (en statique ou en dynamique). Cette fonction membre est la première fonction membre à être exécutée, il s'agit donc d'une...
Les piles en langage C VoirLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage...
Les files en langage C VoirLes files - Premier Entré Premier Sorti Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la file IV. Opérations sur les files A. Initialisation B. Insertion d'un élément dans la file C. Oter un...
Les fonctions en C++ : surcharge et paramètres par défaut. VoirLes fonctions en C++ : surcharge et paramètres par défaut. 1. La surcharge de fonctions et méthodes de classes, dont le constructeur 2. Utilisation des paramètres par défaut En C++, une même fonction ou méthode de classe peut être...
Télécharger Visual C++ Express VoirVisual C++ Express est une version "gratuite" et allégée de Visual Studio ; l'utilisation requiert l'inscription sur le site de Microsoft. Cet environnement de développement permet de créer des application Win32 ou du .NET C.
Java - L'héritage VoirLa notion d'héritage Le concept d'héritage est un des concepts les plus importants de la programmation orientée objet, car il conditionne irréversiblement la façon selon laquelle un code Java est écrit. L'héritage est un mécanisme permettant de...
Java - Constructeurs VoirLe constructeur: une méthode particulière Pour instancier une classe, c'est-à-dire créer un objet à partir d'une classe, il s'agit d'utiliser l'opérateur new. En réalité l'opérateur new, lorsqu'il est utilisé, fait appel à une méthode spéciale de...
Les structures en langage C++ VoirDifférence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de...

1

Niidhogg, le 21 mar 2009 à 11:10:04

Up !

Répondre à Niidhogg

2

fiddy, le 21 mar 2009 à 11:42:22

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
Google is your friend

Répondre à fiddy

3

 Niidhogg, le 21 mar 2009 à 20:32:52

Merci :p

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

Répondre à Niidhogg
Collection CommentÇaMarche.net