J'ai écrit le code ci-dessous afin d'expliquer mon problème. Si je commente la ligne 11 (avec le mot-clé "using"), le compilateur ne compile pas le fichier et affiche cette erreur: invalid conversion from 'char' to 'const char*'
. Il semble ne pas voir la méthode void action(char)
de la classe Parent
dans la classe Son
.Pourquoi devrais-je utiliser le mot-clé "using" pour accéder à ma méthode de classe de base?
Pourquoi le compilateur se comporte-t-il de cette façon? Ou ai-je fait quelque chose de mal?
class Parent
{
public:
virtual void action(const char how){ this->action(&how); }
virtual void action(const char * how) = 0;
};
class Son : public Parent
{
public:
using Parent::action; // Why should i write this line?
void action(const char * how){ printf("Action: %c\n", *how); }
};
int main(int argc, char** argv)
{
Son s = Son();
s.action('a');
return 0;
}
S'il vous plaît dites-moi: et si vous supprimez const dans "const char comment"? –
Vous n'avez pas besoin de taper 'Son s = Son();'. Cela crée juste un temporaire et appelle ensuite le constructeur de copie. Il suffit de taper 'Fils s;' –
Nous avons cette question beaucoup: [http://stackoverflow.com/questions/1835988](http://stackoverflow.com/questions/1835988) [http://stackoverflow.com/ questions/411103] (http://stackoverflow.com/questions/411103) [http://stackoverflow.com/questions/1480085](http://stackoverflow.com/questions/1480085) [http: // stackoverflow. com/questions/1799497] (http://stackoverflow.com/questions/1799497) [http://stackoverflow.com/questions/888235](http://stackoverflow.com/questions/888235) [http: // stackoverflow.com/questions/72010](http://stackoverflow.com/questions/72010) –