So wie ich das Problem verstehe kann nicht gegenseitig inkludiert werden.
Gegeben ist ein Container:
Code:
#pragma once
#include "obj.h"
class container
{
public:
obj* operator=(obj copy);
obj* operator[](int index);
private:
obj* first;
obj* last;
};
Dieser Container enhält einfach mal ... objects:
Code:
#pragma once
#include "container.h"
#include <string>
class obj
{
public:
std::string name;
private:
obj* next;
container* cont;
};
Bei dem Versuch das zu Übersetzen gibt mir der Visual C++ und der GCC lustige Synatxfehler.
Allerding:
Code:
#pragma once
#include <string>
class obj
{
public:
std::string name;
private:
obj* next;
container* cont;
};
class container
{
public:
obj* operator=(obj copy);
obj* operator[](int index);
private:
obj* first;
obj* last;
};
kompiliert er ohne Murren. Ich selber habe leider auch keine passende Lösung gefunden, auch wenn dieser Fall allerdings eher selten auftritt, da eine wechselseitige Beziehung selten ist.
Falls nur auf Methoden der Klasse zugegriffen werden muss, kann das Einfügen aber auch notfalls erst bei der Implementierung erfolgen.