Nev*_*ind 1 c++ constructor initialization
我有这门课:
\nclass MyClass {\npublic:\n int someMember;\n std::vector<int> someVectorMember;\n};\nRun Code Online (Sandbox Code Playgroud)\n我想知道为什么这行不通:
\nMyClass(1, std::vector<int>{1,2});\nRun Code Online (Sandbox Code Playgroud)\n错误:
\nmain.cpp:21:37: error: no matching function for call to \xe2\x80\x98MyClass::MyClass(int, std::vector)\xe2\x80\x99\nRun Code Online (Sandbox Code Playgroud)\n
问题是您传递了两个参数,其中第一个参数是类型int,第二个参数是类型std::vector<int>,而没有这样的构造函数接受上述类型的两个参数。另请注意,在 C++17 中,MyClass 聚合初始化无法使用括号进行工作。
在 C++20 中,虽然聚合初始化可以使用括号,所以这将在 c++20 中按照p0960: 允许从括号值列表初始化聚合 。
为什么没有提供默认构造函数
有一个编译器MyClass::MyClass() 隐式生成的默认ctor ,只是它不能用于MyClass(1, std::vector<int>{1,2})
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |