Salut tout le monde ....
Je débute à peine en c++ et je croise pas mal de problème ce pendant ...
et l'un des problèmes qui me bloque totalement est à propos des constructeurs ...
Donc voilà , j'ai crée une classe "Personnage" et une autre Guerrier qui hérite de cette dernière ...
et j'ai deux constructeurs dans la classe "Personnage" ,un constructeur par défaut et un autre où on peut attribuer des valeurs...
Un bout de code sera utile je sais !! :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
//personnage.cpp
Personnage::Personnage(): m_vie(100) ,m_mana(100) 
{
 m_arme= new Arme() ;    
                           }
 
Personnage::Personnage(string nom_arme,int degats_arme): m_vie(100),m_mana(100) 
{
 m_arme= new Arme(nom_arme,degats_arme) ;    
                           }
Et voilà la sous-classe "Guerrier"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
//guerrier.h
#ifndef DEF_GUERRIER
#define DEF_GUERRIER
#include "personnage.h"
 
class Guerrier : public Personnage
{
      public :
      void coup_poing(Personnage &cible);
 
 
      };
 
#endif
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
//guerrier.cpp
void Guerrier::coup_poing(Personnage &cible)
{
    cible.recevoir_degats (50); 
     }
Bon le problème est portant quand on passe au main
main.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
#include <iostream>
#include <string>
#include "personnage.h" // Ne pas oublier
#include "arme.h"
#include "guerrier.h"
 
using namespace std;      
int main()
{
   Guerrier moi;//ça marche impeccablement
   Guerrier moi ("Un marteau bien lourd",50) ; //ça veut pas aller ...
 
 
  system("PAUSE");      
  return 0;
}
Comme sur les commentaires...
Quand je veux creé un objet de type Guerrier avec des valeur optimisées , le compilateur Devc++ m'insulte poliment on me disant :
no matching function for call to `Guerrier::Guerrier(const char[8], int)'
Et j'y comprends rien , pourtant en héritage tout les attributs et les méthodes de la classe mère passe à la classe héritée

J'espère que vous avez bien compris le problème que je risque ...je sollicite votre aide donc ..
Merci