Napisałem prosty program. Nawet nie sprawdzałem czy działa i jak działa, jakby co. Główny problem to to, że funkcja zaprzyjaźniona nie ma dostępu do prywatnych zmiennych. Z tego co mi wiadomo i czytałem w książce, owa funkcja powinna mieć dostęp do prywatnych składowych klasy, jeśli tak nie jest oświećcie mnie. Jeśli mam rację o to program i proszę o pomoc.
#include <iostream>
#include <windows.h>
#include <conio.h>
using namespace std;
class Angel;
class Summoner
{
private:
int x;
public:
Summoner(){}
Summoner(int z) : x(z){}
friend void ruch(Summoner & w, Angel & a);
void ile(char *tab)
{
int help = x;
x = getch();
tab[help] = '.';
tab[x] = 'S';
}
friend void show(char *tab);
};
class Angel
{
private:
int x;
public:
Angel(){}
Angel(int z) : x(z){}
friend void ruch(Summoner & w, Angel & a);
void show(char *tab);
};
inline void ruch(Summoner & w, Angel & a, char *tab)
{
for(int i=a.x;i<w.x;++i)
{
tab[a.x]='.';
tab[i]='A';
Sleep(500);
}
}
void show(Summoner & w, Angel & a, char *tab)
{
tab[w.x] = 'S';
tab[a.x] = 'A';
for(int i=0;i<100;i++)
{
cout << tab[i];
if(i%20==0) cout << endl;
}
}
int main()
{
char tab[100];
for(int i=0;i<100;i++)
{
tab[i] = '.';
cout << tab[i];
if(i%20==0) cout << endl;
}
Summoner Sum(5);
Angel Nasty(4);
show(Sum, Nasty, tab);
Sum.ile(tab);
ruch(Sum, Nasty, tab);
return 0;
}