Re: class templates und friend (C++)

Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

From: Mathias Waack (mathias_at_atoll-net.de)
Date: 02. Jul 2002


On Tuesday 02 July 2002 21:14, Mark Seuffert wrote:
> #include <stdio.h>

Also waere ich penibel wuerde ich sagen die gibs nicht in C++. Du meinst wohl
die cstdio.

> Die Frage war, warum ist die erste Zeile ("<- good") in Ordnung,
> aber die zweite Zeile ("<- bad") nicht? Es funktioniert zwar wie oben,
> aber ich hab Verständnissschwierigkeiten warum nur die erste Zeile geht.

Oh, das ist einfach, nimm mal folgendes Beispiel:

class C;

class A {
friend class C;
protected: void a() { 0==0; }
};

class B {
public:
  B(A& a) : a_(a) {}
  void c() { a_.a(); }
  A& a_;
};

class C : public B {
public:
  C(A& a) : B(a) {}
};

Zeigt genau Dein Problem. Verschiebst Du jetzt die Methode B::c() in die
Klasse C geht ploetzlich. Ist auch klar: ein friend ist etwas sehr direktes.
Wenn also C friend von A ist, dann auch nur C. B ist keine friend. Daher kann
aus B heraus auch nicht auf A zugegriffen werden. B wird auch dadurch nicht
zum friend, dass C sie beerbt.

Mathias


Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

Dieses Archiv wurde generiert von hypermail 2.1.2 : 02. Jul 2002 CEST