Witam. Mam zadanie, w którym mam skorzystać z funkcji zaprzyjaźnionych. Problem polega na tym, że gdy chcę napisać funkcję zaprzyjaźnioną do jednej klasy w innej klasie, to kompilator twierdzi, że nie ma dostępu do składowych tej pierwszej klasy. Używam Visual Studio 2012. Oto prosty kod wzięty z internetu żeby przedstawić problem:
Tutaj działa:
#include <iostream>
using namespace std;
class klasa
{
int liczba; // wiadomo, że standardowo składowe klasy są prywatne
public:
friend void wyswietl(klasa&); // deklaracja funkcji zaprzyjaźnionej
};
void wyswietl(klasa& kl)
{
cout << "liczba z klasy to: " << kl.liczba << endl;
}
int main()
{
klasa kla;
wyswietl(kla);
system("pause");
return 0;
};
Tutaj nie działa (Pokazuje, że nie ma dostępu do kl.liczba w klasie Main):
#include <iostream>
using namespace std;
class Main;
class klasa
{
int liczba; // wiadomo, że standardowo składowe klasy są prywatne
public:
friend void wyswietl(klasa&); // deklaracja funkcji zaprzyjaźnionej
};
class Main
{
void wyswietl(klasa& kl)
{
cout << "liczba z klasy to: " << kl.liczba << endl;
}
int main()
{
klasa kla;
wyswietl(kla);
system("pause");
return 0;
}
};