j'ai quelque chose comme ça dans mon code:Définitions multiples étranges d'erreur
namespace A {
namespace B {
void
GetLine(std::istream& stream, std::string& line)
{
line.clear();
while (stream.good()) {
std::getline(stream, line);
boost::trim(line);
if (not line.empty()) break;
}
boost::to_upper(line);
}
}
}
Et je reçois plusieurs erreurs de définition à chaque fois que j'appelle A::B::GetLine
. Des idées pourquoi?
(Le code est au travail, donc je vais essayer de donner des extraits spécifiques si vous avez besoin de plus d'informations, mais je ne peux pas simplement passer le code entier ici).
Vous ne pouvez pas publier le message d'erreur du compilateur? Peut-être que cela nous indiquera quelque chose d'autre qui n'est pas dans l'extrait ci-dessus. – David
Essayez-vous de lier dans le fichier objet plusieurs fois? Jetez un oeil à votre makefile pour voir si le .o contenant cette fonction est passé au compilateur plusieurs fois. Je suppose que vous êtes sur un système unix ou unix, mais une autre chose que vous pouvez faire est d'exécuter "nm --demangle" sur tous vos fichiers objets et de rechercher A :: B :: GetLine pour voir si apparaît comme "défini" dans plusieurs fichiers .o. – George
+1 pour le nm --demangle – Chubsdad