C++ problème classe / héritage / pointeurs

Résolu
doom_hammer Messages postés 2 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 14 janvier 2007 - 14 janv. 2007 à 10:56
doom_hammer Messages postés 2 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 14 janvier 2007 - 14 janv. 2007 à 11:44
Bonjour,
Je suis en train de développer un petit jeux pour directX (mais ce n'est pas le problème ici) et pour la réalisation je vais partir sur un modèle de classes d'objet :
Une classe TObject qui contient toutes les méthodes de chargement d'objet, de position et tout.
Puis des sous classes, hérités de cette première. Par exemple TObjCharac, qui contiendra en plus les méthodes pour faire déplacer le personnage, une classe TObjItem, TObjPlace, ...
Mon problème se situe ici. Le constructeur de la classe TObject est celui ci :
TObject(IDirect3DDevice9* p_d3dDevice, CHAR* p_strFileName);

Ma classe TObjCharac est déclarée de cette façon :
class TObjCharac : public TObject { ... };
Son constructeur :
TObjCharac(IDirect3DDevice9* p_d3dDevice, CHAR* p_strFileName);

Sa définition :
TObjCharac::TObjCharac(IDirect3DDevice9* p_d3dDevice, CHAR* p_strFileName) {                              
    TObject(p_d3dDevice, p_strFileName);                                                                 
    ...
};

Je développe sous Dev-C++ et j'obtient le message
no matching function for call to `TObject::TObject()'
candidates are: TObject::TObject(const TObject&)
                 TObject::TObject(IDirect3DDevice9*, CHAR*)

Donc ok je comprend bien qu'il n'arrive pas a lié les deux et je pense que c'est à cause des paramètres, ce doit être a cause des pointeurs ou quoi ça voilà justement je ne sais plus je suis perdu à ce niveau là ^^
Une petite aide?

Merci d'avance

2 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 janv. 2007 à 11:42
TObjCharac::TObjCharac(IDirect3DDevice9* p_d3dDevice, CHAR* p_strFileName) {                              
    TObject(p_d3dDevice, p_strFileName);
Le compilateur croit que tu appelles une fonction nommée TObject
Voici ce qu'il faut écrire:

TObjCharac::TObjCharac(IDirect3DDevice9* p_d3dDevice, CHAR* p_strFileName)
 : TObject(p_d3dDevice, p_strFileName);
{
  ...
}

_____________________________________
Un éditeur de ressources gratuit pour Windows
3
doom_hammer Messages postés 2 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 14 janvier 2007
14 janv. 2007 à 11:44
Merci :)
0
Rejoignez-nous