Bonjour,
J'ai sans doute fait une erreur stupide ... mais je ne vois pas ou : j'ai donc besoin d'un regard extérieur
Voici mon code :
Malgré les virtuals ... comment se fait-il que c'est l'accept() de SortDir qui est appelé et pas celui de ConfigDir ?Code:#include <cstdio> class SortDir { virtual bool accept( const char *fch, const char *dir ){ puts("SortDir:accept()"); } public: SortDir() { this->accept( NULL, NULL); }; }; class ConfigDir : virtual public SortDir { protected : virtual bool accept( const char *fch, const char *dir ){ puts("ConfigDir:accept()"); }; public: ConfigDir() : SortDir(){ }; }; int main( int, char **){ ConfigDir sd; }
Comme sd est un ConfigDir, je m'attendais a ce que ce soit la fonction surchagée qui soit appelée et non l'originale.
Merci pour vos lumières
-----