“我们可以使用以下方法初始化尚未定义任何构造函数的类的对象:
- 成员初始化。
- 复制初始化。
- 默认初始化。
例如:
struct Work { string author; string name; int year; }; Work s9 { "Bethoven", "Symphony No. 9 in D minor, Op. 125; Choral", 1824 }; // memberwise initialization Work currently_playing {s9}; // copy initialization Work none {}; // default initialization
C++ 编程语言第 4 版。第 17.3.1 章
例如:
struct Data
{
int mMember1;
float mMember2;
char mMember3;
};
int main()
{
Data aData_1{1,0.3,33};
Data aData_2{aData_1};
return EXIT_SUCCESS;
}
这必须有效,尽管我在使用 GCC 和使用 Clang 时都会遇到编译器错误。两个编译器中的错误都是“无法将数据转换为 int”。但是,实现复制构造函数时,这个错误会消失,或者没有实现它,而是使用圆括号语法。这个问题有点愚蠢,改变圆括号的卷曲问题就解决了。但是为什么不遵循 TC++PL 的规则?,是编译器问题还是我误解了什么?提前致谢。