Forçar implementação de função abstrata

06/06/2008

0

Existe no C++ alguma forma de declarar em uma classe base uma função abstrata e fazer com que a classe que herdar a classe base seja obrigada a implementar a função abstrata?


Rodc

Rodc

Responder

Posts

06/06/2008

Massuda

A maioria (acho que todos) dos compiladores não irá permitir usar uma classe que contenha métodos abstratos, dá erro de compilação.

Por exemplo, usando o BCC 5.5 para compilar isto...
class Teste 
{
  public:
    virtual void Foo(void) = 0;
};
  
void main(void) {

  Teste teste;
  teste.Foo();
}
...dá os seguintes erros...
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland teste.cpp: Error E2352 teste.cpp 11: Cannot create instance of abstract class ´Teste´ in function main() Error E2353 teste.cpp 11: Class ´Teste´ is abstract because of ´Teste::Foo(void) = 0´ in function main() *** 2 errors in Compile ***



Responder

06/06/2008

Rodc

Pois é realmente fazendo a classe desta forma ele não deixa.
Mas eu estou usando um formulário do Repository no C++ Builder. E neste caso ele deixa implementar o form filho sem implementar as funções abstratas do pai. Talvês deva ter alguma peculiaridade por ter uma interface visual.

Mas valew pela ajuda...


Responder

06/06/2008

Massuda

...eu estou usando um formulário do Repository no C++ Builder. E neste caso ele deixa implementar o form filho sem implementar as funções abstratas do pai...
Talvez seja isso... sei que o compilador do C++Builder tem algumas modificações para permitir integrar com a VCL (parte visual) que é escrita em Object Pascal/Delphi.

Em Object Pascal, não dá erro de compilação criar um objeto que contem métodos abstratos, mas ocorre erro em tempo de execução se tentar usar algum dos métodos abstratos (os métodos não-abstratos funcionam normalmente).


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar