J'ai cette erreur et je ne suis pas capable de résoudre moi-même le code qui me donne cette erreur est p> Je dois mentionner que ce mot et ce site sont maintenant, ma définition de la classe de mots-clés est celle-ci: p> Merci beaucoup! P> En modifiant P> char * code> type p>
MISE À JOUR H1>
source.o: In function `Algorithm::indexSite(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
source.cpp:(.text+0x2c6): undefined reference to `Keyword::Keyword()'
source.cpp:(.text+0x369): undefined reference to `Keyword::~Keyword()'
source.cpp:(.text+0x4a8): undefined reference to `Keyword::~Keyword()'
source.o: In function `Keyword::put_site(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
source.cpp:(.text._ZN7Keyword8put_siteESs[Keyword::put_site(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)]+0x2a): undefined reference to `Stack<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::push(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
collect2: ld returned 1 exit status
make: *** [tema3] Error 1
3 Réponses :
Cette ligne ne fait pas ce que vous pensez:
Keyword() { } ~Keyword() { }
en retirant le constructeur et le destructeur ou en remplaçant avec votre réponse, je reçois toujours la même erreur
@Sniperu: Vous obtenez probablement la même erreur pour autre chose que le constructeur et le destructeur. Il y a probablement une autre fonction que vous avez oubliée de définir
@Sniperu: En fait, il semble que vous manquiez la définition de Stack :: push () code>. Avez-vous mis cela dans un fichier d'en-tête? Sinon, voir Ce Q & A .
J'ai une pile.h et une pile.cpp, et il semble fonctionner après avoir inclus ce #include "pile.cpp" après #include "pile.h"
Mais auparavant, je reliais la pile.cpp dans mon makefile
@Sniperu: Ne fais pas ça. .CPP CODE> Les fichiers ne sont pas destinés à être
#include code> d. Il suffit de déplacer la définition des fonctions de membre code> s de pile de code> à
pile.h code>
@sniperu: Linking stack.cpp code> n'aide pas, car les fonctions des membres d'un modèle de classe sont instanciées uniquement lorsqu'un appel est trouvé à ces fonctions et dans
stack.cpp code> vous Ne les appelez pas, tandis que sur d'autres unités de traduction où vous les appelez leur définition n'est pas visible, le compilateur ne peut donc pas émettre de code pour eux. Résultat: référence non définie. Il suffit de mettre ces définitions dans
pile.h code>
Je l'ai fait et aucune erreur n'a été fondée. Merci beaucoup!
@Sniperu: De rien. S'il vous plaît, envisagez de marquer la réponse comme acceptée si cela résout votre problème :)
pas ce mais ce p> dans votre version mot-clé AUX (); code> est un prototype de fonction em> pas une déclaration de variable. P> p>
Et si vous essayez d'avoir cette forme sémantique: vous seriez comme code> pour écrire
mot-clé AUX () code> au lieu de
AUX AUX = (); code> Mais vous
ne pouvez pas code> en raison de détails. Savez-vous ce que serait ce détail?
J'ai eu le même problème lorsque je saisi le code suivant dans ma fonction principale, j'ai un fichier list.h and list.cpp contenant ma classe de liste. I Obtenir une erreur de "Demande de membre" ISPTY "dans" MyList ", qui est de type" liste de type "()" "" " p> L'erreur est que le compilateur considère la myList () en tant que prototype de fonction p > lorsque je corrige le code d'être p> J'ai eu l'erreur "non définie référence à` list :: liste () "et quelques erreurs similaires pour le destructeur. p> inspection supplémentaire de mon code et de mes réponses dans cette page J'ai constaté que je dois inclure mon fichier list.cpp dans le fichier main.cpp, mais j'ai inclus list.h dans mon fichier list.cpp mais il Semble que ces informations doivent également être informées au dossier principal.
lecture supplémentaire pour Ce didacticiel expliquer pourquoi, si je compile le projet Sans y compris List.cpp, il compilera bien parce que le fichier List.h a le prototype, mais il échouerait dans la phase de liaison car le linkeur ne pourrait pas résoudre l'appel à la liste () à une fonction spécifique. P> < / p>
Lisez à propos de L'analyse la plus vexante .
@ Joachimpileborg pas vraiment la même chose est-ce? L'erreur op était plus simple que celle de l'article lié à.
@John: En effet. Techniquement, ce n'est pas un MVP, car il n'y a pas d'ambiguïté. Cela ne peut tout simplement pas être interprété comme la déclaration d'un objet.
Merci @ Joachim Pileborg, comme c'était l'erreur que j'essayais de réparer dans mon cas. La question ici n'a pas aidé, votre allusion à l'article a fait!