【发布时间】:2021-12-06 03:12:28
【问题描述】:
typedef struct node {
int val;
int val2;
node(int a, int b) : val(a), val2(b) {}
node(int val) = delete;
}node;
int main()
{
node a = {3};
cout << a.val << " " << a.val2 << endl;
return 0;
}
上面的代码给出了编译错误,表明使用了已删除的函数node::node(int)。
但是,当我删除 node(int a, int b) : a(val), b(val2) {} 时,此代码编译没有问题。这将如何发生?
【问题讨论】:
-
IDK 如果它可以解决问题,但您可能打算改为写
node(int a, int b) : val(a), val2(b) {}。 -
对不起,这是一个错字,我已经编辑过了。但我的问题仍然有效。
-
恭喜,您了解到 C++ 是棘手的。这是一种通过仪式。
标签: c++ initialization c++20 list-initialization aggregate-initialization