Freund-Klasse auf : geerbte Klassen sind nicht Freund?

In C++, ich habe eine Klasse A, die Freundin mit einem Klasse B.

Ich sieht aus wie geerbte Klassen von B sind nicht Freund der Klasse A.

Ich diese Einschränkung von C++ oder mein Fehler ?

Hier ist ein Beispiel. Beim kompilieren, bekomme ich eine Fehlermeldung in der Zeile "return new Memento":

Memento::Memento : unmöglich, Zugriff private member deklariert in Erinnerung.

class Originator;

class Memento
{
  friend class Originator;

  Memento() {};

  int m_Data;

public:
  ~Memento() {};
};

class Originator
{
public:
  virtual Memento* createMemento() = 0;
};

class FooOriginator : public Originator
{
public:
  Memento* createMemento()
  {
    return new Memento; //Impossible to access private member of Memento
  }
};

void main()
{
  FooOriginator MyOriginator;
  MyOriginator.createMemento();

}

Konnte ich natürlich hinzufügen FooOriginator als Freund von Memento, aber dann, das heißt, ich müsste hinzufügen, um alle Urheber-geerbte Klassen als Freund von Memento, das ist etwas möchte ich vermeiden.

Irgendeine Idee ?

InformationsquelleAutor Jérôme | 2009-01-29

Schreibe einen Kommentar