méthode virtuelle pure et implémentation par défaut.
Salut,
Problèmes du jour:
J'ai une classe abstraite que voilà
Code:
1 2 3 4 5 6 7
|
class A
{
public:
virtual void exec()=0 {return;}
}; |
apparament le compilateur ne semble pas apprécier que je définisse la méthode exec dans la déclaration de la classe.
Code:
1 2
|
13 C:\Documents and Settings\Utilisateur\Bureau\test2.cpp pure-specifier on function-definition |
Dans mon cours de langage, la définition pouvait se faire à l'intérieur de la classe. Cela atil changé??
Qu'à cela ne tienne, tentons de la définir en dehors.
J'ai mainetenant un système de classes que voila:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
class A
{
public:
virtual void exec()=0;
};
void A::exec()
{
return;
}
class B
{
public:
void exec(){cout << "blabla" << endl;}
};
class C: public A, public B
{
public :
using B::exec;
};
int main()
{
C c;
c.exec();
} |
Ici, le compilo cale à la déclaration de "c" dans le main. car soidisant :
Code:
1 2 3 4
|
43 C:\Documents and Settings\Utilisateur\Bureau\test2.cpp cannot declare variable `c' to be of type `C'
43 C:\Documents and Settings\Utilisateur\Bureau\test2.cpp because the following virtual functions are abstract:
17 C:\Documents and Settings\Utilisateur\Bureau\test2.cpp virtual void A::exec() |
Je pensais qu'on pouvait définir un comportement par défaut aux méthodes virtuelles pures que s'il n'est pas redéfini par une classe fille, ce sera le comportement adopté par cette dernière. 8O
Ou bien ça a changé??
Ou bien jai foiré quelque part dans mon code??