我的程序没有编译并且一直输出相同的错误“赋值中的非左值”。我试过环顾互联网为什么会这样,但我似乎找不到任何东西。我真的很感激一些意见。
#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)
你不需要函数内的&
答案 1 :(得分:2)
问题在于这一行&object.Var=99;
您使用object
的地址而不是访问.Var
,这无效。
似乎你误解了引用,你不必去引用它们(与指针不同)。
将您的功能更改为:
void Friend(Class &object)
{
object.Var=99;
cout << object.Var << endl;
}
答案 2 :(得分:2)
将功能定义更改为
void Friend(Class &object)
{
object.Var=99;
cout << object.Var << endl;
}
错误的原因在以下C ++标准引用中描述
如果表达式的类型为T,则结果具有“指向T的指针” 并且是 prvalue
答案 3 :(得分:0)
将&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
。