Problem mit 2 Klassen.
-
Servus,
ich habe 2 Klassen wobei jede Klasse auf Methoden der anderen Klasse zugreifen muss, wobei jede Klasse in einer eigenen Header-Datei definiert ist.Pseudocode:
// datei1.h: #ifndef DATEI_1_HEADER #define DATEI_1_HEADER #include "datei2.h" class datei1 { // ... public: void func1(); void func2() { datei2::func2(); } // ... }; #endif //############################################################# // datei2.h: #ifndef DATEI_2_HEADER #define DATEI_2_HEADER #include "datei1.h" class datei2 { // ... public: void func1() { datei1::func1(); } void func2(); // ... }; #endif
Nun machen mir hier wohl die include-wächter Probleme, da er durch einbinden der Datei2 in die Datei1 die include-wächter aktiviert werden und wenn die Datei1 in die Datei2 eingebunden werden soll greifen die include-wächter.
Weis vielleicht jemand eine elegante Lösung dafür???
Gruß Wolle
-
vorwärstdeklarationen
class datei2;
class datei1{
}:
class datei2{
};
-
Wolle. schrieb:
[cpp]
// datei1.h:
#ifndef DATEI_1_HEADER
#define DATEI_1_HEADER#include "datei2.h"
class datei1
{
// ...
public:
void func1();
void func2() { datei2::func2(); } // Fehler: func2 nicht statisch
// ...
};#endif
//#############################################################
// datei2.h:
#ifndef DATEI_2_HEADER
#define DATEI_2_HEADER#include "datei1.h"
class datei2
{
// ...
public:
void func1() { datei1::func1(); } // Fehler: func1 nicht statisch
void func2();
// ...
};#endif
[/cpp]Ich weiß nicht genau, was du möchtest. Hast du in jeder Klasse einen Pointer
auf die andere Deklariert? Dann stell den Prototyp class datei2; vor datei1
und lass das #include weg. In der .cpp-Datei kannst du dann jeweils gefahrlos
die Header includieren und die Funktionen problemlos implemtieren.
-
Danke ihr 2 für eure Antworten, es war zwar nicht ganz so leicht (hab ich wohl etwas schlecht erklärt) aber ihr habt mich auf die richtige Spur gebracht.
Gruß Wolle