Bonjour � tous, et bonnes f�tes de fin d'ann�e.
Bon j'ai un souci, sous visual studio 2008 en C++.
Voila j'ai cr�� une "interface" Deplacable qui contient une seule m�thode:
virtual void deplacer(int x, int y)=0;
Vu quelle est virtuelle pure, c'est pour �a que j'ai d�fini cette classe comme une interface. Bref j'ai une classe ObjetAnime qui h�rite de Deplacable et qui impl�mente donc la m�thode deplacer(int x, int y).
1 2 3 4
| void ObjetAnime::deplacer(int x, int y){//déplacement relatif
setX(getX()+x);
setY(getY()+y);
} |
Maintenant j'ai une classe abstraite DeplacableHorizontal qui h�rite de Deplacable:
1 2 3 4 5 6
| class DeplacableHorizontal: public Deplacable{
public:
DeplacableHorizontal(short vitesseH=0);
virtual void deplGauche();
virtual void deplDroite();
... |
et voici leurs impl�mentations
1 2 3 4 5 6 7 8
|
void DeplacableHorizontal::deplGauche(){
deplacer(-_vitesseH,0);
}
void DeplacableHorizontal::deplDroite(){
deplacer(_vitesseH,0);
} |
Et c'est maintenant que le probl�me arrive. J'ai une classe Missile qui h�rite de ObjetAnime et de DeplacableHorizontal.
Et � la compil, je me prend une erreur C2259: "Missile": impossible d'instancier une classe abstraite � cause des membres suivants:
'void Deplacable::deplacer(int,int)' est abstrait
Pourtant deplacer est d�fini dans la classe ObjetAnime.
Faut-il absolument �crire dans le Missile.h
virtual void deplacer(int x, int y);
pour que cela fonctionne, m�me si on ne l'impl�mente pas dans le cpp?
Je trouve cela un peu tordu de red�finir des m�thodes qui le sont d�j�.