вопрос по опции Friend

  • Автор темы NCHNCHNCH
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

NCHNCHNCH

Гость
#1
Всем привет. не получается сослаться на приватный элемент класса из функции другого класса. причем данную функцию делаю другом.

Код:
class d
{
public :
int t;
int r;
int ttt( int );

friend void i:: qqq(d &q); // объявил функцию другом
private :
int e;
};

class i
{
public :
int rrr;
int www;
void qqq (d &f) // сама функция 
{
f.r=7;
f.e=10;
}
};

void main()
{
d f;
f.t=5;
www(f);
}
система выдает ошибки .... чего только не пробовал. если объявить функцию которая сама по себе не в классе i то проблем нет. а так не выходит.

подскажите плиз или скажите где искать ответ.

заранее спасибо

влад.
 
04.09.2006
2 566
2
Минск
#2
Сложно разобраться в твоем потоке мыслей, так что вот пример тестового приложения:
Код:
#include <iostream>

class SomeClass;

class FriendClass
{
public:
void PrintWithChanging( SomeClass& Some );
};

class SomeClass
{
public:
SomeClass() : PrivateMember( 0 ) {};

void Print() const
{
std::cout << "SomeClass: " << PrivateMember << std::endl;
};

private:
int PrivateMember;

friend void FriendClass::PrintWithChanging( SomeClass& Some );
};

void FriendClass::PrintWithChanging( SomeClass& Some )
{
Some.PrivateMember = 5;
std::cout << "FriendClass: " << Some.PrivateMember << std::endl;
}

int main()
{
SomeClass Some;
Some.Print();

FriendClass Friend;
Friend.PrintWithChanging( Some );

std::cout << "After changing - ";
Some.Print();

return 0;
}
 
N

NCHNCHNCH

Гость
#3
Спасиобо большое !!! работает !!!!! разобрался
 
Статус
Закрыто для дальнейших ответов.