Friend Klasse auf sich möglich?
-
Hallo zusammen,
ich grüble gerade darüber nach, wie ich auf private Member der gleichen Klasse aus 2 verschiedenen Objekten zugreifen kann, wenn ich diese nicht nach außen (z.B. via public) zugreifbar machen will.
Hier ein Bsp. in Pseudocode:
class RegionC { public: RegionC() : region(NULL) { region = NewRegion(); } RegionC(struct Region *region) { this->region = region; } ~RegionC() { if (region != NULL) DisposeRegion(region); } void andNewRegion(const RegionC& newRegion) { // hier möchte ich auf die struct Region des anderen RegionC-Objektes zugreifen // ginge das auch ohne public Getter mittels Friend-Mechanismus, oder wäre hier // was ganz Anderes angebracht if ((region != NULL) && (newRegion.region != NULL)) AndRegionRegion(newRegion.region, region); } private: struct Region *region; ];Hoffe, das Problem kommt rüber (Frage ist im Kommentar gestellt)!
Habe aber noch ein grundsätzliches Problem: Ich tue mich mit dem Design im Rahmen von C++ elend schwer (bin alter Java-Programmierer).
Komme da nur zäh voran, v.a. was die ganzen Möglichkeiten von Referenzen, Templates, Friend, Exceptions usw. anbelangt (finde Java an diesen Stellen einfacher und klarer strukturiert - möchte nun aber gern C++ lernen). Habe auch einige Wälzer hier, in die ich immer wieder mal reinsehe. Beim Umsetzen komme ich aber nur kaum bzw. zäh voran und strukturiere alles immer wieder mal um!Habt ihr hier noch gute Best Practices, Links o.ä.?
Danke schon mal!
Ciao
-
Ich verstehe dich nicht, du hast doch Zugriff auf die
private-Elemente innerhalb der gleichen Klasse. Wieso kommst du nun plötzlich auffriend?
-
Sich selber als friend zu definieren ist nicht notwendig - die Klasse kann auch so auf ihre eigenen privaten Elemente zugreifen (sowohl die von this als auf von anderen Objekten).
-
Reth schrieb:
(bin alter Java-Programmierer).
...
Habt ihr hier noch gute Best Practices, Links o.ä.?
Hmm:
- Wenn du new regelmäßig benutzt, dann ist das ein Zeichen, dass du deine Java-Herkunft nicht abgelegt hast.
- Wenn du Pointer regelmäßig benutzt ebenfalls
- Manche würden das auch von ellenlangen Klassenhierarchien sagen
- Außerdem solltest du dir mal angucken, was RAII bedeutet, das ist eine wichtige Programmiertechnik, die es so in Java nicht gibt.
- Lies die Bücher von Scott Meyers zu effektivem C++.