Oi pessoal
Meu maior problema é que tento fazer as coisas em C++ da forma com que eu fazia em Java, e isso nem sempre é uma boa escolha.
Para treinar, estou criando uma lista encadeada em C++ (usando templates). Em um dado momento, fui criar o método remover, veja abaixo:
No início do código coloquei
#define null 0Mais lá pro final, cheguei a esse impasse:
int getIndice(T alvo)
 {
       Elemento *atual;
       atual = primeiro;
       int i = 0;
       while (atual != null)
       {
              if (atual->elem == alvo)
              {
                     return i;
               }
               i++;
              atual = atual->proximo;
       }
       return -1;
}
T remover(T elemento)
{
       int indice = getIndice(elemento);
       if (indice == -1)
       {
              return null; // erro aqui. Não necessariamente isso é um ponteiro
       }
       return remover(indice);
 }
T remover(int indice)
{
       if (ehVazia())
       {
       }
 }O problema é que em Java tudo é pointeiro, então no método removerInicio(T elemento), caso o índice do elemento fosse -1 (não existe), ele deveria retornar null. Isso em C++ não funciona, pois não necessariamente essa lista encadeada será de ponteiros.
Esse problema (ter uma lista encadeada tanto de ponteiros quanto de não-ponteiros) me deixou sem solução. Será que alguém teria alguma ideia para me ajudar a resolver esse impasse? Tipo o que retornar ou que modificações eu deveria fazer? Eu não gostaria de obrigar que minha lista só aceitasse ponteiros.
Muito obrigado.