class extern. wie draf zugreifen?

TimN

Erfahrenes Mitglied
Hi,

ich steh' grad voll auf dem Schlauch. Hab zu lange PHP programmiert und jetzt wollte ich ein kleines Projekt in C++ machen, doh irgendwie hab ich's früher besser gekonnt^^

Mein Problem:
Ich habe folgende (für das Problem relevante) Dateien:
main.cpp
map.cpp

die map.cpp enthält meine Map-Klasse.
In der main.cpp soll eine Instanz davon erzeugt werden.

wenn ich aber
#include "map.cpp"
in die main.cpp einfüge, bekomme ich folgene Linker-Fehlermeldung:
LNK2005: bla bla bla wurde bereits in main.obj definiert.

wie bekomme ich das jetzt hin, dass ich eine Instanz erzeugen kann?

danke
Tim
 
Ich bin zwar auch relativ neu, aber ich versuch mich mal daran. :)

Bastel dir nen Header von der map.cpp und inkludiere nur den (statt der C-Quelle).
Da drin ist die Deklaration aber nicht die Implementation der Klasse. Entsprechend sollten beide C-Quellen den Header inkludieren.

Alternativ (aber das ist sehr unschön) kannst du auch einfach die Objektdatei von deiner Map.cpp wegschmeißen, weil der gesamte Code dank dem Include schon in der Main.cpp ist.
Bei einem Include nimmt der Compiler quasi alles, was in der Zieldatei ist, und schiebt es an die Stelle, an der das include steht.
Darum meckert der Linker auch.. die Klasse gibt es zwei mal. Einmal in der Map.o(bj) und einmal in der Main.o(bj), weil sie da eingebunden wurde.
 
Zurück