Forçar implementação de função abstrata
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
Curtidas 0
Respostas
Massuda
06/06/2008
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......dá os seguintes erros...
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();
}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 ***
GOSTEI 0
Rodc
06/06/2008
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...
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...
GOSTEI 0
Massuda
06/06/2008
...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).
GOSTEI 0