domingo, 24 de fevereiro de 2013

C++: Erro de Redefinição de Classe

Estava eu, mexendo com heranças e tal e quando vou compilar o meu código, aparece esse erro: "Redefinition of 'ClasseX'". Achei estranho, porque não declarei duas vezes a classe, como a maioria da Internet que achei, patéticamente fizeram de fazer um definição de classe no arquivo h e outra no arquivo cpp. 

No meu caso, o que ocorreu foi que ao incluir no meu código, uma classe derivada de ClasseX e outra classe também derivada de ClasseX, o compilador incluiu duas vezes a ClasseX e aí é que deu o erro de redefinição.

A solução para isso foi usar alguns preprocessors, como no código abaixo:

#ifndef __meuprojeto__MinhaClasse__
#define __meuprojeto__MinhaClasse__

class MinhaClasse{

};

#endif

O que significa esse código? A primeira linha verificamos se a definição __meuprojeto__MinhaClasse__ NÃO está definida. Se ela não estiver, você cria a definição e cria a definição da classe. Depois encerra com um #endif.

Problema resolvido! Se por acaso, na hora de compilar, tentar colocar uma classe pela segunda vez, o preprocessor vai evitar que haja uma redefinição de classe e não haverá mais erros.

Nenhum comentário:

Postar um comentário