[C++] Constructeur et héritage
Résolu
Niidhogg
Messages postés
42
Date d'inscription
Statut
Membre
Dernière intervention
-
Niidhogg Messages postés 42 Date d'inscription Statut Membre Dernière intervention -
Niidhogg Messages postés 42 Date d'inscription Statut Membre Dernière intervention -
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 !
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 !
A voir également:
- Maison héritage canapé avis
- Google maps localisation maison - Guide
- Cheick yvan formate héritage ✓ - Forum Vos droits sur internet
- Maison du foot avis - Forum Consommation & Internet
- Des doutes sur "mon-maillot-foot.com - Forum Consommation & Internet
- Engrais pour fraisier fait maison - Guide
3 réponses
Salut,
Les appels de fonctions ne correspondent pas.
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
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