Boa noite a todos
Seguindo o exemplo:
class idao
{
public:
virtual ~idao();
virtual void insert(entity &entity) = 0;
}
class dao : public idao
{
public:
virtual void insert(entity &entity);
}
int main()
{
idao* dao = new dao();
}
Para fazer isso é necessário utilizar um ponteiro e eu não quero utilizar ponteiro ou smart pointer.
Como utilizar de forma correta a interface em c++, poderia chamar o dao ao invés do idao ou simplesmente não fazer ele implementar a interface? Qual seria a melhor solução para esses conceitos?
Pode ser que não tenha compreendido o conceito de programar para abstrações ou esteja tentando aprender c++ programando em outra linguagem no c++.
Obrigado a todos.
Tenho 97,64% de certeza de que polimorfismo em C++ depende de ponteiros, sendo assim acho que você não conseguiria fugir deles se quiser “programar para abstrações”.
Mas porque não quer utilizar ponteiros?
Estou estudando c++ e vi em alguns lugares para evitar o máximo possível uso de ponteiros
Bom, não sei muita coisa e o pessoal daqui pode lhe dar conselhos melhores, mas tenho que dizer o seguinte:
Não leve isso tão a risca.
Ponteiros são parte essencial de C e C++ e é através deles que você consegue usar todo o potencial delas.
Por isso, ao invés de fugir deles, tente entender como funcionam de verdade.
O que vc deve ter visto é para evitar o uso indiscriminado deles, mas estude-os melhor e você vai começar a reconhecer as situações onde vc deve usá-los e onde deve encontrar outra alternativa.
Bons estudos.
1 curtida
Obrigado pelas dicas, vou continuar os estudos e aprender a utilizar os ponteiros e o polimorfismo.
1 curtida
Já tentou usar uma referência:
int main(){
idao & dao = *new dao();
}
Se ele fizer isso ele perde a capacidade de usar o delete
Sobre ponteiros alguém já viu esse site http://alumni.cs.ucr.edu/~pdiloren/C++_Pointers/ ?.
Peguei o livro do Bjarne para ler também
1 curtida
Não tinha visto o site, li a primeira página, gostei, tá nos favoritos. Valeu a indicação!