Нужно написать два класса,в каждом из которых имеется функция,получающая указатель на объект другого класса.
#include <cstdlib>
using namespace std;
class Y;
class X
{
int z;
void gpy(Y* z);
friend void Y::gpx(X* z); // пишет , что класс Y не определён , хотя прототип есть...
};
class Y
{
int z;
void gpx(X* z);
friend void X::gpy(Y* z);
};
void X::gpy(Y* z)
{
cout << &z;
}
void Y::gpx(X* z)
{
cout << &z;
}
int main()
{
Y sy;
X sx;
sx.gpy(&(sy.z)); // тут тоже ошибка , возможно я не правильно передал аргумент , с точки зрения синтаксиса
sy.gpx(&(sx.z));
cin.get();
return 0;
}
P.S. Надеюсь код не "грязный" , не могу разобраться в чём моя ошибка , заранее спасибо за отзывчивость!
Если вы хотели передавать указатель на член z - то очевидно, что это int*...
В sx.gpy(&sy.z)) мне видятся 2 ошибки:
1. gpy() - private, так что вы не имеете права вызывать ее в main().
2. gpy() получает указатель на Y, а вы передаете указатель на член в Y...
Цитата: disputant
По первому - тут можно сделать другом не функцию, а класс целиком (friend class Y;).
В sx.gpy(&sy.z)) мне видятся 2 ошибки:
1. gpy() - private, так что вы не имеете права вызывать ее в main().
2. gpy() получает указатель на Y, а вы передаете указатель на член в Y...
В sx.gpy(&sy.z)) мне видятся 2 ошибки:
1. gpy() - private, так что вы не имеете права вызывать ее в main().
2. gpy() получает указатель на Y, а вы передаете указатель на член в Y...
Хорошо,а подскажите,пожалуйста,какой тип передаваемого аргумента мне объявить,чтобы функция получала (уже открытый) член другого класса?
Спасибо огромное,очевидное решение,просто смотрел по самоучителю,а там был объявлен такой тип,я даже не ожидал ошибки там)