Erreur de compilation "redéfinition de type 'struct'" bien que ce soit la première définition
Tout fonctionnait bien jusqu'à ce que je déménage un peu de code à partir du fichier principal d'une nouvelle classe, alors j'ai eu l'erreur suivante:
erreur C2011: 'color1' : 'struct' type redéfinition
struct color1
{
color1()
{
red = green = blue = 0;
}
color1(float _red, float _green, float _blue)
{
red = _red;
green = _green;
blue = _blue;
}
float red, green, blue;
};
Une idée ?
source d'informationauteur Homam | 2011-04-28
Vous devez vous connecter pour publier un commentaire.
Si le compilateur dit qu'il est redéfini, alors il est probablement.
Mon psychique compétences de débogage me dire que vous avez déplacé la structure à partir d'un fichier source pour un fichier d'en-tête, et d'oublier de l'inclure des gardes dans cet en-tête, qui est ensuite inclus plusieurs fois dans un fichier source.
EDIT: en règle générale de manière générale, j'suggérons d'éviter principaux traits de soulignement. Dans certains cas (par exemple, suivi d'une majuscule), ils sont réservés pour la mise en œuvre et il est plus simple de tout simplement jamais utiliser des
_
au lieu d'en espérant que vous vous souvenez de toutes les règles.À partir de l'extrait de code ci-dessus, je ne peux pas en déduire quelque chose est faux.
Mais en général, cette erreur signifie que vous êtes y compris les même fichiers d'en-tête à plusieurs reprises. Ne pas oublier d'ajouter le standard gardes pour inclure des fichiers?
Vous pouvez avoir la définition de la structure dans un fichier d'en-tête.
Ont
au début de l'en-tête où la structure est définie, elle résout le problème.