Conversão de ponteiro a ponto entre as classes derivadas e base?
-
22-09-2019 - |
Pergunta
Em relação ao seguinte programa C ++:
class Base { };
class Child : public Base { };
int main()
{
// Normal: using child as base is allowed
Child *c = new Child();
Base *b = c;
// Double pointers: apparently can't use Child** as Base**
Child **cc = &c;
Base **bb = cc;
return 0;
}
O GCC produz o seguinte erro na última declaração de atribuição:
error: invalid conversion from ‘Child**’ to ‘Base**’
Minha pergunta está em duas partes:
- Por que não há conversão implícita da criança ** para base **?
- Eu posso fazer este exemplo funcionar com um elenco de estilo C ou um
reinterpret_cast
. Usar esses elencos significa jogar fora todo o tipo de segurança. Existe algo que eu possa adicionar às definições de classe para fazer com que esses ponteiros fossem lançados implicitamente, ou pelo menos frase a conversão de uma maneira que me permita usarstatic_cast
em vez de?
Solução
Tente usar a página da página PageViewer!Ele é projetado para mostrar outra página nele (basicamente em um iframe) documentação
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow