YO !! [browar]
Tak sie zastanawiam jak można rozwiązać taki problem , mam 2 klasy :
[code]class TEST
{
public:
int fun1();
};
class TEST2
{
public:
int fun2();
friend int TEST::fun1();
};[/code]
W tym momencie metoda fun1() klasy : TEST jest metodą zaprzyjaźnoną klasy TEST2 , co w praktyce oznacza , że będzie mogła korzystać z prywatnych pól i metod klasy TEST2 . Wszystko oki . Ale załużmy że ja chcę żeby metoda fun2() klasy TEST2 była metodą zaprzyjaźnoną klasy TEST . Nie moge napisać w klasie TEST :
friend int TEST2::fun2() bo kompilator nie wie jeszcze nic o tej metodzie ani klasie i wyrzuci błąd . gdybym chciał zamiast metod zapryzjaźnić całe klasy w ten sposób , to ne byłoby problemu . Wtedy umieściłbym 2 deklaracje:
class TEST;
class TEST2;
na samym początku kodu , przed definicjami tych klas i wszystko byłoby ok . Ale z metodami jest troche gorzej , nie moge napisać deklaracji metody , przed definicją klasy , np :
class TEST; //deklaracja klasy
int TEST::fun1(); //deklaracja metody tej klasy
a tu definicja klasy ...
bo wyskakuje błąd , kompilator po prostu nie wie , że ta klasa będzie miała taką metode ...
Jak to rozwiązać ????