Estudos e uso de interface

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!