gpt4 book ai didi

C++——成员变量聚合初始化

转载 作者:行者123 更新时间:2023-11-27 23:50:42 25 4
gpt4 key购买 nike

在下面的代码中:

class Class
{
private:
LUID luid;

public:
Class()
{
luid = { 0, 0}; // A. Does not compile
LUID test = {0, 0}; // B. Compiles
test = {1,1}; // C. Does not compile
}

为什么A和C不对,而B没问题?

我得到的 A 和 C 的错误是:

错误 C2059:语法错误: '{'

错误 C2143:语法错误: 丢失的 ';'在“{”之前

错误 C2143:语法错误: 丢失的 ';'在 '}' 之前

我认为这与 C++ 版本有关,尽管我不确定它使用的是哪个版本,而且它不是很新。

最佳答案

语句 LUID test = {0, 0} 是使用初始化列表对局部变量进行的初始化;这是有效的,因为它在变量定义过程中使用。相反,test = {0, 0} 是一个赋值,因为 test 是在别处定义的。仅在特定情况下才支持分配初始值设定项列表(例如,分配给标量或特定类型的类类型时(例如,参见 braced-init-list assignment)。

其他情况,比如数组,不能赋值,只能初始化:

typedef int LUID[2];

int main(){

LUID t = { 10, 20 }; // compiles
// t = { 10, 20}; // does not compile, since an array is not assignable

return 0;
}

关于C++——成员变量聚合初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46694823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com