//schwebende Deklaration class Objekt; void freieFunktion(Objekt& o); class Fremder { public: void fremdeFunktion(Objekt& o, int i); }; class Freund { public: void funktion1(Objekt& o); void funktion2(Objekt& o); }; class Objekt { int privaterBestandteil; friend void freieFunktion(Objekt&); friend void Fremder::fremdeFunktion(Objekt&, int); friend class Freund; };