Partage
  • Partager sur Facebook
  • Partager sur Twitter

LNK2005 déjà défini

basic_ostream

Sujet résolu
    2 janvier 2020 à 16:15:09

    Bonsoir, je développe une application C++ pour un projet universitaire et je me retrouve face à cette erreur:

    LNK2005

    "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class Vecteur2D const &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVVecteur2D@@@Z) already defined in Fonctions.objE:\TFAC\IngenieurieLog\Solution_Projet\Projet\Point.obj

    qui se reproduit aussi ici E:\TFAC\IngenieurieLog\Solution_Projet\Projet\Projet.obj

    Je comprends l'erreur, j'ai lu pas mal de forum sur le sujet avant de poster ici mais je ne sais ni pourquoi elle est là, ni comment la réglée, ni où elle est exactement ...

    Je peux fournir le code si nécessaire.

    Merci d'avance pour vos réponses ^^

    -
    Edité par AlexisPouillaude 2 janvier 2020 à 16:20:02

    • Partager sur Facebook
    • Partager sur Twitter
      2 janvier 2020 à 21:59:39

      Bonjour,

      En écrivant cette erreur en français, ça donne :
      - lors de la compilation du fichier Fonction.cpp, la définition de la fonction std::ostream& operator<<( std::ostream&, Vecteur2D const& ) a été vue.
      - lors de la compilation du fichier Point.cpp, encore une fois une définition de std::ostream& operator<<( std::ostream&, Vecteur2D const& ) a été vue.
      - lors de la compilation du fichier Projet.cpp, encore une fois une définition de std::ostream& operator<<( std::ostream&, Vecteur2D const& ) a été vue.
      On ne doit définir une fonction qu'une seule fois, il y a bien trop de définition!

      N'aurais-tu pas mis cette définition dans un fichier header?
      Tu as compris l'erreur, je comprends ton hésitation, il existe plusieurs moyens de corriger cette erreur.
      Par exemple, on pourrait mettre la définition dans le fichier Vecteur2D.cpp, on peut aussi faire que la fonction soit déclarée inline ainsi elle pourrait être vue aussi souvent qu'elle est utilisée.

      • Partager sur Facebook
      • Partager sur Twitter

      En recherche d'emploi.

        11 janvier 2020 à 22:33:59

        Merci beaucoup pour votre réponse, effectivement il manquait le mot clé inline à ma définition de fonction. Bonne soirée 😁
        • Partager sur Facebook
        • Partager sur Twitter

        LNK2005 déjà défini

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown