Oi pessoal  Eu programo em Java há algum tempo e resolvi aprender C++. 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 0
Mais 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 removerInicio(T elemento)
        {
            int indice = getIndice(elemento);
            if (indice == -1)
            {
                return null;
            }
            return removerInicio(indice);
        }
        T removerInicio(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.