ОБСУЖДЕНИЕ

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

2 ответов 4 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Статус
Закрыто для дальнейших ответов.
Автор темы
Всем привет. не получается сослаться на приватный элемент класса из функции другого класса. причем данную функцию делаю другом.

Код:
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 то проблем нет. а так не выходит.

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

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

влад.
 
Сложно разобраться в твоем потоке мыслей, так что вот пример тестового приложения:
Код:
#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;
}
 
Спасиобо большое !!! работает !!!!! разобрался
 
Статус
Закрыто для дальнейших ответов.

Ещё по теме