8
votes

"La fonction a déjà un corps"

Qu'est-ce que cela signifie?

bool readXMLInteger(xmlNodePtr node, const char* tag, int& value);


2 commentaires

Assurez-vous que vous envisagez la même copie du fichier que le compilateur est (par exemple un chemin différent, des modifications non sauvegardées, etc.)


Bienvenue dans le débordement de la pile! Le code que vous avez posté ci-dessus a l'air bien, alors je soupçonne que l'erreur est causée par autre chose. Recherchez les erreurs communes suivantes - êtes-vous #include ing du fichier .cpp à la fin du fichier d'en-tête? Avez-vous fait une construction propre dans l'intervalle? Avez-vous plusieurs fichiers .CPP #include ing les uns les autres? N'importe lequel de ces (ou quelque chose de totalement différent) pourrait être en faute ici, mais sans plus d'informations, je ne pense pas pouvoir aider.


8 Réponses :


8
votes

Cela signifie que, à un moment donné, votre code actuel est en train de relire dans le flux de compilation, il semble donc deux tentatives de définition (par opposition à la déclaration) de la fonction.

suspectez quelque chose sur la façon dont vous configurez les déclarations de préprocesseur.


0 commentaires

1
votes

Cela signifie que la fonction est implémentée ailleurs dans votre code.


0 commentaires

3
votes

Peut-être avez-vous déjà trouvé la solution, mais pour moi la reconstruction de la solution.

J'ai déplacé ma mise en œuvre à partir du fichier d'en-tête vers le fichier .cpp et le fichier .pch avait déjà cette information. Donc, je devais reconstruire pour résoudre cette erreur.


0 commentaires

11
votes

Avez-vous utilisé des gardes inclus dans votre fichier d'en-tête d'origine?

Par exemple: P>

#ifndef _TOOLS_H_
#define _TOOLS_H_

... your header body is here ...

#endif


0 commentaires

1
votes

Ce qui suit ne répond pas à votre question, mais j'ai eu le même problème avec une cause différente. Cette réponse est uniquement pour l'enregistrement.

Certaines personnes ont un très mauvais style d'ajout de code au fichier d'en-tête, ce qui entraîne des déclarations de constructeur tels que cmyclass () {} qui est déjà considéré comme une définition et non seulement une déclaration (oui , même s'il est situé dans le fichier d'en-tête)

Suppression de ces définitions en les modifiant en déclarations réelles par exemple. cmyclass (); résoudra ce type de problème particulier.


0 commentaires

0
votes

Aussi, vérifiez si vous avez effectué une copie du fichier (.CXX ou .CPP Extension) dans le même répertoire. Donc, la fonction sera définie deux fois.
J'avais l'erreur d'erreur pour les fonctions statiques!


0 commentaires

0
votes

Écoutez, cela va sembler stupide, mais pour quelqu'un d'autre qui en va de l'autre, assurez-vous de ne pas essayer accidentellement et d'inclure accidentellement le fichier CPP à la place de l'en-tête (clic droit Fichier, Copier le chemin complet, Coller, il se produit. ...)

continué à regarder sur cette extension de fichier pendant un moment


0 commentaires

0
votes

Vous obtenez cette erreur car le fichier d'en-tête est appelé plusieurs fois à partir d'autres endroits. Insérer #pragma une fois en haut de votre fichier d'en-tête. Il convient de jeter un coup d'œil à votre toutes références et de trouver des appels en double. Ou vous avez des broces bouclées (disons, vides;)) Dans votre définition d'en-tête.


0 commentaires