Bonjour,
J'essaye de bien comprendre l'héritage sous c++ alors je me suis fait un petit programme de base. J'ai donc une classe mammifere et une classe chat. La classe chat dérive donc de la classe mammifere. J'essaye de créer mon chat qui est donc un mammifere et d'afficher que c'est un type mammifere mais le compilateur me sors une erreur que je ne comprend pas :
cannot call member function `std::string Mammifere::GetType()' without object
Voici le code des 2 classes :
Classe Mammifere :
Code :
- #include <iostream>
- using namespace std;
- class Mammifere
- {
- private:
- int pattes;
- string type;
- public:
- Mammifere()
- {
- this->pattes = 4;
- this->type = "Mammifere";
- }
-
- ~Mammifere()
- {
- cout << "Destruction du mammifere" << endl;
- }
-
- friend ostream & operator<<(ostream & os, const Mammifere & Mam)
- {
- cout << "type: " << Mam.type << endl;
- cout << "Nombres de pattes: " << Mam.pattes << endl;
- return os;
- }
-
- int GetNbrePattes()
- {
- return pattes;
- }
-
- string GetType()
- {
- return type;
- }
- };
|
Classe Chat :
Code :
- #include <iostream>
- #include "Mammifere.cpp"
- using namespace std;
- class Chat : public Mammifere
- {
- private:
- string cri;
- string couleur;
-
- public:
- Chat() : Mammifere()
- {
- this->cri = "miaou";
- this->couleur = "blanc";
- }
-
- ~Chat()
- {
- }
-
- friend ostream & operator<<(ostream & os, const Chat & chat)
- {
- string type = Mammifere::GetType(); //<<< ERREUR ICI !!!!
- //int pattes = Mammifere::GetNbrePattes();
- //cout << "Le chat est un " << type << " avec " << pattes << " pattes." << endl;
- //cout << "Son cri est " << cri << " et sa couleur est " << couleur << "." << endl;
- return os;
- }
- };
|
La ligne qui pose problème est indiqué ds le code par "<<< ERREUR ICI !!!!" juste au dessus. Merci de votre aide. Je pense que c'est pas grand chose mais je vois pas d'ou ca peut provenir.
Un grand merci a vous.
Groskachou
Message édité par groskachou le 15-03-2006 à 18:24:31