У меня есть класс, и я пытаюсь создать функцию друга для работы с данными этого класса.Функция Friend класса создает ошибку: «no '___» функция-член объявлена «
Вот пример того, что я пытаюсь сделать:
// test.hpp
class test
{
public:
friend void friendly_function();
private:
int data;
};
void test::friendly_function()
{
data = 0;
}
Однако компилятор выплевывает ошибку: test.hpp:23:34: error: no ‘void test::friendly_function()’ member function declared in class ‘test’
Я знаю, что могу объявить операторы таким образом, например, так:
class test
{
public:
friend const bool operator<(const test& _lhs, const test& _rhs);
private:
int data;
};
const bool test::operator<(const test& _lhs, const test& _rhs)
{
return (_lhs.data < _rhs.data);
}
Почему я не могу это сделать с помощью friendly_function
? Доступны ли функции друга только в качестве операторов?
Я знаю, что это было задано (* где-то в этом огромном пуле вопросов), но вам действительно не нужно было делать это CW. Это хорошо продуманный ответ, и это прекрасно, чтобы получить ответ, отвечающий на ваши собственные вопросы, если вы выясните их и хотите помочь другим. – chris
Это не компилируется. Я все еще получаю сообщение об ошибке: «данные» не были объявлены в этой области » – FDinoff
@chris Я не понимаю. Его спрашивают и ошибочно отвечают ** одним и тем же человеком мгновенно. 'friendly_function' МОЖЕТ получить доступ к закрытым элементам, но для этого не нужно использовать OBJECT для нестатических членов. Как это полезно в любом случае? – lapk