Witam,
chciałem napisać programik w którym jest klasa zaprzyjaźniona z funkcją gotoxy (piszę w code::blocks). Programik chciałem zrobić w ramach ćwiczeń. Niby wszystko ok. Jest tylko jeden problem kompilator wyrzuca błąd, że składniki x i y są prywatne pomimo tego, że zaprzyjaźniłem funkcję gotoxy z klasą. A czytałem, że jak się zaprzyjaźnia funkcję z klasą to funkcja może korzystać ze składników prywatnych klasy tak jakby nie były prywatne. Jestem po nocce więc mogę czegoś nie kumać ale proszę o wytłumaczenie dlaczego kompilator może się buntować. Dodam tylko, że jak zrobię x i y publiczne to wszystko działa bez zarzutu. Z góry dziękuje za pomoc.
#include <iostream>
#include <windows.h>
using namespace std;
class Gracz
{
int x,y;
public:
Gracz(int a=12, int b=12):x(a),y(b){};
friend void gotoxy (int x, int y);
};
void gotoxy (int x, int y)
{
COORD cord;
cord.X = x;
cord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cord);
}
int main (void)
{
Gracz p;
gotoxy (p.x,p.y);
cout << "Cos"<<endl;
gotoxy(5,5);
cout << "Cos2"<<endl;
system ("pause");
return 0;
}