Lista em C++ dando erro na hora de chamar as funções

Eu tomo conta de alguns sistemas em C++ que reescrevemos para evitar o uso de ponteiros “nus” (ou seja, *).

Sempre usamos const string& em vez de const char *, só para ter uma idéia.

Em 95% do código trocamos tudo por shared_ptr<>.

Se olhar os sistemas, parecem com Java escrito em C++ (ha ha ha).

Isso praticamente removeu alguns problemas como vazamento de memórias e acesso ilegal a memória, tudo porque agora tudo é bem controlado.

E o desempenho não foi muito afetado por causa disso.

Isso porque o compilador, se bem orientado, consegue compensar tais coisas como uso de métodos virtuais, que normalmente penalizam a execução de programas em C++ se o compilador não for esperto o suficiente para saber que ele pode “desligar” a herança virtual dependendo da análise de fluxo do programa.

Quando um desenvolvedor aqui resolveu usar um ponteiro “nu” (por descuido) deu o maior rolo, porque ele se esqueceu de deletar a memória que havia alocado, e foi estourar a memória em produção, o que foi um verdadeiro escândalo. Depois demos a maior bronca nele. Agora ele não faz mais isso.

Só um comentário. Dev C++ não é um compilador, é uma IDE, um editor de código.
O compilador que o acompanha é o MinGW, numa versão pré-histórica.

Eu recomendo fortemente que você não use o DevCpp. O MinGW antigo tem mensagens de erro mais difíceis de entender, sem falar que essa IDE é cheia de bugs.

Alternativas melhores são:

Vale lembrar que tanto o Code::Blocks quanto o QT Creator já vem com versões mais modernas do mesmo compilador do DevCpp, o MinGW, embarcadas.