为什么我不能在 main 函数中更改类的公共变量
why i can't change a public variable of a class in the main function
[在第14行,其中f().i = 10,Xcode说表达式不可分配,为什么?违法吗?
class A{
public:
int i;
A():i(0){}
};
A f()
{
A a;
return a;
}
int main() {
f().i = 10;
return 0;
}
f()
生成一个临时的。C++不允许分配给临时成员。从形式上讲,f().i
是一个 xvalue,而赋值需要一个左值。
无论如何,这样的任务将毫无意义,因为临时任务很快就会被摧毁。
相关文章:
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 为什么我不能在一个类的不同行中声明和定义成员变量?
- 表达式必须具有常数值,变量不能用作定义数组大小的常数
- 变量不能明确
- 流变量不能出现在 OpenMP 第一私有中?
- 为什么 UInt64 变量不能包含大于 UInt32::Max 的值?
- 变量不能在 lambda 中隐式捕获,并且没有使用 switch 语句指定捕获默认值
- 什么形式上保证了非原子变量不能看到凭空出现的值,并像理论上原子一样创造数据竞赛?
- 为什么可以将Char指针变量初始化为字符串,而INT指针变量不能初始化到整数数组
- clang vs gcc CRTP:constexpr 变量不能有非文字类型
- 为什么这些变量不能移动?
- 为什么我的基类指针变量不能访问派生类中的函数?
- 变量不能出现在常量表达式中
- 哪些临时变量不能在 c++11 中使用“someType()”初始化
- 为什么除了直接赋值0之外,bool变量不能设置为0
- 常量变量不能是引用的模板参数,但非常量可以
- WARN:变量不能绑定(它要么不存在,要么已经被优化掉了)
- 整型变量不能存储大的值
- 变量不能在没有指定capture-default的lambda中隐式捕获
- 变量不能产生正确的数据