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:

  1. Por que não há conversão implícita da criança ** para base **?
  2. 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 usar static_cast em vez de?
Foi útil?

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
scroll top