Ich arbeite an einem Projekt für die Schule mit Datenstrukturen in Visual C++. Ich habe heute früh meinen Code kompiliert und nahm ihn nach Hause und es funktioniert nicht mehr. Beide Computer, an denen ich gearbeitet habe, verwenden Visual Studio 2008. Hier ist der Text des Fehlers.LNK2005 - Visual Studio - Kompiliert vor gut, keine Änderungen, keine Kompilierung jetzt
Ich bin nicht sicher, ob das etwas damit zu tun haben könnte, aber mein Programm hat 3 Hauptklassen: AVL, die von BST erbt, die von SearchableADT erbt. Dies sind Templates.
BST.obj: Fehler LNK2005: "öffentlich: __thiscall BST, Klasse std :: allocator>> :: BST, Klasse std :: allocator>> (void)" (?? 0? $ BST @ V? $ basic_string @ DU? $ char_traits @ D @ std @@ V? $ Zuweiser @ D @ 2 @@ std @@@@ QAE @ XZ) bereits in AVL.obj
definiert Ich bin bei einem kompletten Verlust für was machen. Ich habe in ein paar Foren gestöbert, die MSDN-Seite angeschaut und nichts konnte es beheben.
Eine Sache, die ich bemerkte erwähnt auf einer Website, die ich vergessen hatte, war # ifndef/# definieren für meine AVL. Ich habe ein neues Projekt erstellt und meinen gesamten Code mit diesem Zusatz kopiert und eingefügt und erhalte immer noch den gleichen Fehler. Ich habe meinen Code überprüft, um zu überprüfen, dass ich nicht mehrere Includes von Bibliotheken verwende. Ich weiß nicht, was ich von hier aus tun soll.
Vielen Dank für jede Hilfe, die Sie zur Verfügung stellen können, und Entschuldigung im Voraus, wenn ich etwas Wichtiges weggelassen habe.
Edit: Ich bin mir nicht 100% sicher, was Sie mit Inline meinen, versuchen, einige suchen jetzt. Ich habe eine separate cpp, wo ich die eigentlichen Funktionen definieren. Würde das Inline-Ding in Gregs Antwort immer noch zutreffen?
MSN, ich fürchte, ich habe deine Antwort nicht verstanden. Wie für mehrere Kopien des Standardkonstruktors, habe ich
BST<int>::BST()
{
root = new Node<int>;
}
BST<string>::BST()
{
root = new Node<string>;
}
Ich bin mir nicht sicher, ob das, was Sie redeten, oder wenn das könnte das Problem sein. Meine Header-Datei hat nur BST() ;, nichts für die int oder String-Vorlage. Ich habe diese Definitionen in meinem cpp, weil mein Ausbilder sagte, dass sie für die Vorlagenklasse notwendig waren.
Vielen Dank