Функция друга «не-значение в назначении»

Моя программа не компилируется и продолжает выводить ту же ошибку «не-значение в присваивании». Я пытался посмотреть в Интернете, почему это происходит, но я не могу ничего найти. Я был бы очень признателен за вклад.

#include <iostream>
using namespace std;

class Class
{
public:
Class()
{
Var=0;
}
private:
int Var;

friend void Friend(Class &object);

};

void Friend(Class &object)
{
&object.Var=99;
cout << &object.Var << endl;
}

int main()
{
Class testobject;
Friend(testobject);
}

0

Решение

Вам не понадобится & внутри функции

2

Другие решения

Проблема в этой линии &object.Var=99; Вы берете адрес object и чем доступ .Var, это не может работать.

Кажется, вы неправильно поняли ссылки, вам не нужно разыменовывать их (в отличие от указателя).

Измените свою функцию на это:

void Friend(Class &object)
{
object.Var=99;
cout << object.Var << endl;
}
2

Измените определение функции на

void Friend(Class &object)
{
object.Var=99;
cout << object.Var << endl;
}

Причина ошибки описана в следующей цитате стандарта C ++

если тип выражения — T, результат имеет тип «указатель на T»
и является prvalue

2

замещать &object.Var=99; с object.Var=99; а также cout << &object.Var << endl; с cout << object.Var << endl;

При передаче аргумента, & означает, что вы получите переменную в качестве ссылки.

void Friend(Class &object) означает, что вы получите ссылку на testobject в object,

&object.Var подразумевает адрес object.Var, Вы не можете назначить это. Отсюда и ошибка non-lvalue in assignment,

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector