Escribí el siguiente código para explicar mi problema. Si comento la línea 11 (con la palabra clave "using"), el compilador no compila el archivo y muestra este error: invalid conversion from 'char' to 'const char*'
. Parece que no se ve el método void action(char)
de la clase Parent
en la clase Son
.¿Por qué debería usar la palabra clave "using" para acceder a mi método de clase base?
¿Por qué el compilador se comporta de esta manera? ¿O he hecho algo 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;
}
Por favor, dime: ¿y si eliminas const en "const char how"? –
No necesita escribir 'Son s = Son();'. Eso solo crea un temporal y luego llama al constructor de copia. Simplemente escriba 'Son s;' –
Tenemos esta pregunta MUCHO: [http://stackoverflow.com/questions/1835988](http://stackoverflow.com/questions/1835988) [http://stackoverflow.com/ preguntas/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) –