Mehrfachdefinitionsproblem
-
Ich programmiere gerade ein Programm, welches schon viele Funktionen enthält, die mir leichte Arbeiten, die aber oft benutzt werden (Stringoperatiionen) beinhaltet.
Da das schon ~ 400 Zeilen waren und ich sonst so viel hin und her Scrolle wollte ich diese Auslagern.
OK, ich habe vorher aber schon meine Klassen, die zum Speichern von Datenstrukturen dienen in einen Header namens "Containerklassen.h" ausgelagert.
Die neue Datei hieß dann "Hilfsfunktionen.cpp" die die Datei Hilfsfunktionen.h eingebunden hatte(welche wiederum Containerklassen.h einbinden musste, da einige Funktionen einen Pointer auf eine Klasse als Rückgabewert haben.).
Die Main Funktion hatte alle Header eingebunden.
Das Problem ist dieser Fehler:
ParserHilfsFunktionen.obj : error LNK2005: "class CointainerWM" (?WM@@3VContainer@@A) ist bereits in main.obj definiert.Wenn ich irgendwo die Definition herausnehme, erhalte ich Fehler, weil dort die Klasse nicht definiert ist.
Eigentlich dachte ich, dass es reicht jede Datei mit #pragma once zu beginnen.
Gelöst habe ich das Problem nun dadurch, dass ich Hilfsfunktionen.cpp einfach in Hilfsfunktionen.h umbenannt habe und nun an der Stelle, an der vorher die Funktionen waren includiere.
Das habe ich schon vorher so gemacht, bevor ich Projekte auf meherere .cpp Dateien aufgeteilt habe, aber die Saubere Art ist es nicht. Wie kann ich das nun sauber aufteilen???
So dass ich wirklich keine Probleme mehr bekomme auch nicht, wenn ich aus Versehen die Reihenfolge meiner Includes ändere, was im Moment verdammt fatal enden würde.Ich habe mir dazu schon eine Menge durchgelesen, aber irgendwie weiß ich immer noch nicht, wie ich das Problem lösen kann.
-
Eine globale Variable war nicht extern .
Kann mir vielleicht jemand ein ordentlichen C++ Buch empfehlen?
C++ Wochenend Chrashcurs von Stephen R. Davis habe ich bis jetzt gelesen und viel Internettutorials...
-
Richte deinen BLick nach oben auf dem Bildschirm^^ Da gibts nen Link zur Bücherrezession.
Evtl sagt dir ja da was zu