compiler geht im kreis bei include
-
ich hab ein frage zum inkludieren von headerdateien. vereinfacht geht es darum, dass ich eine klasse habe, die objekte einer anderen klasse beiinhaltet. zu meiner verzweiflung muss ich in der unterklasse auf elemente der oberklasse zugreifen, d.h ein objekt der oberklasse wird als argument an die unterklasse übergeben. dazu muss ich ja die headerdatei der oberklasse in der unterklasse inkludieren, damit diese klasse das objekt erkennt. weil ich es jetzt so gemacht habe, glaube ich, dass der compiler im kreis kompiliert. gibt es zu diesem problem eine lösung? Danke.
-
hallo
du musst die klasse mit einer vorwärtsdeklaration bekannt machen.
class foo;
-
wie geht das? ich hab jetzt alle klassen in meiner main klasse inkludiert, ich bekomm aber immer noch den gleichen fehler.
-
Matze...sei froh dass Du überhaupt etwas verstehst : )
-
@matthias: poste doch mal ein Minimalbeispiel, das Dein Problem aufzeigt. Dann bauen wir das so um daß es paßt.
-
@Bexter: Da meint einer er hat die Weisheit mit dem Löffel gefressen. Ist besser wenn du bei deinen kleinen verketteten Problemchen bleibst.
#ifndef DatabaseH #define DatabaseH #include "ClusterResult.h" using namespace std; class Database { protected: ClusterResult m_KMeansRes; ... public: Database(); virtual ~Database(); ... }; #endif #ifndef ClusterResultH #define ClusterResultH #include "ClusterView.h" using namespace std; class ClusterResult { protected: ClusterView m_ClusteredValues; ... public: ClusterResult(); ClusterResult(int iValues); ~ClusterResult(); ... }; #endif #ifndef ClusterViewH #define ClusterViewH #include "Database.h" using namespace std; class ClusterView { protected: ... public: ClusterView(); ClusterView(Database *pDatabase, BinFile *resFile); ~ClusterView(); ... #endif
wenn ich compiliere, bekomme ich den fehler dass er den typ clusterview in ClusterResult nicht kennt. wenn ich das include "Database.h" in ClusterView entferne funktionierts.
-
ich hab das problem lösen können. danke an jester und elise;