2010-04-18 4 views
1

Je reçois une erreur de liaison, et je ne suis pas sûr de sa référence.Non résolu Symbole externe

Voici l'erreur

1> Main.obj: erreur LNK2019: symbole externe non résolu « public: __thiscall vide tas binaire, classe std :: allocateur>>, classe Comp, classe std :: allocateur> >> :: insert (classe Item, classe std :: allocateur>> const &) "(? insérer @? $ BinaryHeap @ V? $ Article @ V? $ basic_string @ DU? $ char_traits @ D @ std @@ V? $ allocateur @ D @ 2 @@ std @@@@ V? $ Comp @ V? $ basic_string @ DU? $ char_traits @ D @ std @@ V? $ allocateur @ D @ 2 @@ std @@@@@@ QAEXABV? $ Item @ V? $ Basic_string @ DU? $ Char_traits @ D @ std @@ V? $ Allocateur @ D @ 2 @@ std @@@@@ Z) référencé dans la fonction "public: void __thiscall PriorityQueue, class std :: allocateur>> :: insertItem (int, classe std :: chaîne_base, classe std :: allocateur> const &) " (? insertItem @? $ PriorityQueue @ V? $ basic_string @ DU? $ char_traits @ D @ std @@ V? $ allocateur @ D @ 2 @@ std @@@@ QAEXHABV? $ basic_string @ DU? $ char_traits @ D @ std @@ V? allocateur $ @ D @ 2 @@ std @@@ Z)

Le code est assez longue, mais si vous me voulez, je posterai volonté.

grâce

Répondre

3

Il est dit que vous appelez BinaryHeap::insert mais aucune mise en œuvre de cette fonction est liée Vous devez avoir des fichiers d'en-tête autour ou le compilateur avez échoué lorsque vous avez essayé d'appeler une fonction non déclarée. avez-vous oublié de lier une bibliothèque BinaryHeap?

2

Essayez-vous de définir une classe BinaryHeap basée sur un modèle? Déclarez-vous la méthode insert dans le fichier .h et la définissez dans le fichier .cc?

Cela ne fonctionne pas sur la plupart des compilateurs. Vous devez définir des fonctions de gabarit pour qu'elles soient disponibles au moment de la compilation, pas seulement pour le temps de liaison. Déplacez la définition de la fonction dans le fichier d'en-tête.

5

Il s'agit d'une fonction de modèle, BinaryHeap<T, Comp>::insert(T const &). Votre compilateur MSVC ne prend pas en charge les modèles exportables (très peu le font). Assurez-vous que vous avez défini (pas simplement déclaré) cette fonction dans un fichier d'en-tête, pas un fichier .cpp.

Questions connexes