Zwei Klassen aus verschiedenen Namespaces "befreunden"
-
Hallo, oder besser gesagt: Guten Morgen!

Ich habe zwei Klassen, die in verschiedenen Namespaces liegen. Alles spielt sich in einem Ordner ab.
namespace viecher
- class Viechnamespace schnapper
- class SchnapperNun möchte ich mein Viech mit dem guten Schnapper befreunden, sodass ein Schnapper die privaten Attribute eines Viechs zugreifen kann.
Die Klasse Viech ist sehr simpel:
//Viech.h #ifndef VIECHER_H_ #define VIECHER_H namespace viecher { class Viech { public: Viech(); private: int beine; friend class Schnapper; }; } #endifAlso nur ein Viech mit privaten Beinen. Die Implementation ist nicht mal nennenswert:
//Viech.cpp #include "Viech.h" namespace viecher { Viech::Viech() : beine(5) { } }So weit, so gut. Nun gibt es noch die Klasse Schnapper, die versucht, auf die privaten Beine eines Viechs zuzugreifen:
//Schnapper.h #ifndef SCHNAPPER_H_ #define SCHNAPPER_H_ namespace schnapper { class Schnapper { public: Schnapper(); }; } #endifUnd die Implementation:
//Schnapper.cpp #include <iostream> #include "Schnapper.h" #include "Viech.h" namespace schnapper { Schnapper::Schnapper() { viecher::Viech viech; viecher::Viech viech2; if (viech.beine == viech2.beine) //Compiler-Error std::cout << "TRUE!"; } }Allerdings bekomme ich bei
"int beine;" in "Viecher.cpp" die Fehlermeldung "‘int viecher::Viech::beine’ is private" und in "if (viech.beine == vieh2.beine)" in "Schnapper.cpp" die Meldung "within this context".Zusammengefasst sagen mir die Meldungen also:
Du darfst in schnapper::Schnapper nicht auf die privaten Attribute von viecher::Viecher zugreifen.Wie löse ich das Problem?
Danke im Voraus

-
...