friend-Funktionen
-
Hallo,
ich möchte eine private Methode der Klasse C1 als friend der Klasse C2 deklarieren.
Geht das so?class C1{ int status; // ... public: void set_status(int state); void irgendwas(int x, int y, int z); private: int idl(int IrgendEinElement); } class C2{ friend int C1::idl(int IrgendEinElement); };
Gruß
-
(schreibfaul) siehe http://home.arcor.de/cpp_kurs/cpp/le16/le16_01.htm
-
So geht es bestimmt nicht. Wenn, dann sagt die Klasse selbst wer auf die privaten Sachen zugreifen darf und nicht die fremde Klasse. Also C1 sagt C2 darf auf meine privaten Sachen zugreifen und nicht C2 sagt ich darf auf private Sachen von C1 zugreifen. die 2. Variante würde das private konzept doch etwas überflüssig machen.
Für einzelne methoden habe ich das allerdings noch nicht gesehen. du könntest höchstens in C1 schreiben: friend class C2;
-
Geht das so?
Ja. Damit sagt C2, dass die Memberfunktion id1 der Klasse C1 friend von C2 ist und damit auf alle Elemente der Klasse C2 zugreifen darf.