Mam klasę mapa posiadająca pola - plansza (trójwymiarowy wektor), xplanszy, yplanszy (wymiary planszy), oraz klasę pionek z polami x,y przechowującymi współrzędne pionka.
W klasie mapa mam takie metody jak upuść (bierze pionek i na polu o jego współrzędnych do vectora wstawia char go reprezentujący), oraz podnieś(z pola o współrzędnych pionka podnosi znak który jest na kocu wektora).
w pionku za to mam metodę odpowiedzialna za ruch pionka, działa ona na zasadzie używa funkcji podnieś, zmienia współrzędne pionka a następnie używa upuść.
I tu pojawia mój problem - jak w mainie używam podnieś, upuść nie ma problemu, jak w klasie pionek nie działa. Czytałem o zaprzyjaźnianiu jednak nie wiem jak rozwiązać ten problem.
class mapa
{
friend class pionek;
public:
vector< vector< vector<char> > > plansza;
int xplanszy;
int yplanszy;
//konstruktory destruktory inne metody
void upusc(int x, int y, char znak)
{
if (plansza[y-1][x-1][0]=='.')
{
plansza[y-1][x-1][0]=znak;
}
else
{
plansza[y-1][x-1].push_back(znak);
}
}
void podnies(int x, int y)
{
if(plansza[y-1][x-1].size()>1)
{
plansza[y-1][x-1].pop_back();
}
else
{
plansza[y-1][x-1][0]='.';
}
}
};
class pionek{
public:
int x;
int y;
//konstruktory inne metody
void ruch(mapa plansza)
{
plansza.podnies(x,y);
//tutaj kod odpowiedzialny za zmiane wspolrzednych
plansza.upusc(x,y,'W'); //W to symbol naszego pionka
}
};
//dalej mamy main, tworzymy mape, tworzymy pionek o wybranych współrzędnych, umieszczamy go na mapie z poziomu main
//Wieza - obiekt klasy pionek, mapaa - obiekt klasy map
Wieza.ruch(mapaa);
Jak spowodować aby te ponoszenia opuszczenia w klasie pionek wpłynęły na obiekt klasy mapa?