дружественные функции в 2-х классах
От: eks314  
Дата: 02.02.07 08:04
Оценка:
Здравствуйте,

Рассмотрим 2 класса:

class A {
...
public: type aFunction();

};

class B {
...
public: type bFunction();

};


Я правильно понимаю, что сделать так, чтобы bFunction был другом класса A, а aFunction был другом класса B без того чтобы сделать класс A другом B (или наоборот) нельзя?
Re: дружественные функции в 2-х классах
От: Аноним  
Дата: 02.02.07 08:07
Оценка:
Здравствуйте, eks314, Вы писали:


E>
class A;
class B;
E>class A {
E>...
friend class B;
E>public: type aFunction();

E>};

E>class B {
E>...
E>public: type bFunction();
friend class A;
E>};
E>
Re: дружественные функции в 2-х классах
От: __bobik__ Украина http://farnetstat.narod.ru/
Дата: 02.02.07 08:11
Оценка:
class A {
...
public: type aFunction();
friend type B::bFunction();

};

class B {
...
public: type bFunction();
friend type A::aFunction();

};


так подойдет?
Re[2]: дружественные функции в 2-х классах
От: eks314  
Дата: 02.02.07 08:28
Оценка:
Здравствуйте, __bobik__, Вы писали:

тогда уж еще надо вписать вначале

class B;


___>
___>class A {
___>...
___>public: type aFunction();
___>friend type B::bFunction();

___>};

___>class B {
___>...
___>public: type bFunction();
___>friend type A::aFunction();

___>};
___>


___>так подойдет?


но даже такое не откомпилируется. насколько я понимаю функция должна быть сначала определена и только потом ее можно в другом классе определить как дружественную. в данном случае bFunction не определена, а ты уже определяешь ее как друга...
Re[2]: дружественные функции в 2-х классах
От: eks314  
Дата: 02.02.07 08:29
Оценка:
так я тоже умею
но см вопрос внимательнее
Re: дружественные функции в 2-х классах
От: Андрей Тарасевич Беларусь  
Дата: 02.02.07 08:48
Оценка:
Здравствуйте, eks314, Вы писали:

E>Рассмотрим 2 класса:


E>
E>class A {
E>...
E>public: type aFunction();

E>};

E>class B {
E>...
E>public: type bFunction();

E>};
E>


E>Я правильно понимаю, что сделать так, чтобы bFunction был другом класса A, а aFunction был другом класса B без того чтобы сделать класс A другом B (или наоборот) нельзя?


Нельзя. Для friend-деклараций никаких исключений в отношении использования '::' не сделано: раз используется '::', то имя класса должно быть известно и он должен быть определен.
Best regards,
Андрей Тарасевич
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.