#include klappt nicht! warum???
-
hallo,
hier mein problem:
ich habe mein c++ projekt auf mehrere dateien verteilt. bisher alles gut, doch dann das:
in einer header(.h)-datei definiere ich eine klasse, die ich in einer anderen klasse verwenden möchte, in der .cpp-datei sind alle funktionen usw. definiert.
will ich nun diese klasse in einer anderen datei instanziieren, z.b. so:
(in Klasse2.cpp)#include "Klasse1.h" //... Klasse2::foo() { Klasse1 k; k = Klasse1(param1, param2); } //...
schmeißt mir visual c++ (6.0) folgendes um die ohren:
error C2065: 'Klasse1' : nichtdeklarierter Bezeichner error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'k' error C2065: 'k' : nichtdeklarierter Bezeichner
und das, obwohl ich doch die klassendeklaration von Klasse1 eingebunden hab!
die dateien sind in meinem vc++-projekt auch alle eingebunden!hat hier irgend jemand einen plan, was ich hier falsch mache?
für schnelle hilfe wäre ich sehr dankbar!
-
Poste doch mal den Quelltext deiner Headerdatei.
-
Da muss irgendein Müll im .h-File drinnenstehen, denn der von dir gepostete Code passt schon so.
Nur würd ich gleich
Klasse1 k(param1, param2);
schreiben.
-
Und ich würde noch dazu sagen das deine Klasse CKlasse1 heißt, oder? Bei Source Dateinamen wird das C ausgelassen, also dein Code :
#include "Klasse1.h" //... CKlasse2::foo() { CKlasse1 k = CKlasse1(param1, param2); } //...
Oder steht in dem Header der Klasse CKlasse1 nur nen haufen müll?!?
-
(D)Evil schrieb:
Und ich würde noch dazu sagen das deine Klasse CKlasse1 heißt, oder?
Eigentlich ist diese "Namenskonvention" mit dem C vor Klassennamen ja nur eine lästige Angewohnheit der Visual-Studio-Assistenten. Aber Standard ist das jedenfalls nicht.
-
ok, header-datei sieht im prinzip wie folgt aus:
Klasse1.h:
#ifndef __KLASSE1__H #define __KLASSE1__H class Klasse1{ public: Klasse1(Type param1, Type param2); ~Klasse1(); //... private: //... }; #endif
Klasse2.h
#ifndef __KLASSE2__H #define __KLASSE2__H class Klasse2{ public: Klasse2(); ~Klasse2(); //... private: //... }; #endif
also nix besonderes!
-
Wird deine Klasse2.h auch inkludiert? Fehlt deiner foo-Funktion auch im Originalquelltext der Rückgabewert?
-
masterofx32 schrieb:
Wird deine Klasse2.h auch inkludiert? Fehlt deiner foo-Funktion auch im Originalquelltext der Rückgabewert?
ja zu beidem!
-
verzweifelt! schrieb:
masterofx32 schrieb:
Wird deine Klasse2.h auch inkludiert? Fehlt deiner foo-Funktion auch im Originalquelltext der Rückgabewert?
ja zu beidem!
Headerdatei:
Gut.
Rückgabewert:
Nicht gut. Wenn kein Rückgabewert, dann void. Nur der Konstruktor darf ganz ohne
Vielleicht ist das ja schon das Problem
-
k = Klasse1(param1, param2);
Was willst du eigentlich damit?
Klasse1 k;
Hier hast du eine Instanz deiner Klasse auf dem Stack.