如何在C++中初始化需要参数的结构数组
How to initialize an array of structs that demand arguments in C++
我试图初始化一个结构数组,但结构在初始化时需要参数,如下所示:
#include <iostream>
using namespace std;
struct MyStruct{
string par1;
double par2;
MyStruct(string var1, double var2){
par1=var1;
par2=var2;
}
};
int main(){
MyStruct test("apples", 17.5);
MyStruct MyArray[3];
return 0;
}
结构"test"初始化时没有问题,但当MyArray尝试初始化时,它会给我
'没有用于调用MyStruct::MyStruct()的匹配函数'
以及
'候选者需要2个参数,提供了0'
我想这是因为我必须使用par1和par2的一些参数来初始化它,但我不知道如何初始化,也不知道是否可能。如果有任何帮助,我将不胜感激,谢谢。
为每个数组元素提供一个初始化程序:
MyStruct MyArray[3] = {
MyStruct("oranges", 42.6),
MyStruct("bananas", 63.2),
MyStruct("pomegranates", 3.2)
};
由于C++11,这可以稍微减少:
MyStruct MyArray[3] {
{"oranges", 42.6},
{"bananas", 63.2},
{"pomegranates", 3.2}
};
int main(){
std::vector<MyStruct> MyArray(3, MyStruct("apples", 17.5));
return 0;
}
这种方法有一些局限性:1)向量中的元素是相同的,2)类必须是可复制的。
有什么理由反对使用std::vector
吗?
#include <vector>
std::vector< MyStruct > mystructs;
mystructs.push_back( MyStruct( "apples", 17.5 ) );
mystructs.push_back( MyStruct( "bananas", 7.5 ) );
mystructs.push_back( MyStruct( "cherries", 17.5 ) );
相关文章:
- 使用不带参数的函数访问结构元素
- 将结构字段的类型展开为可变模板参数
- MSVC将仅移动结构参数解释为指针
- 如何使我的 sizeof sum 结构与空参数包一起工作
- 如何传递带有通过引用传递的结构参数的函数?
- 展开可变参数模板结构
- 在类构造函数中定义结构变量的参数
- 如何在方法中传递结构参数
- 我应该在C++中将这些结构用作参数化构造函数吗?
- 带参数的数据结构的全局声明
- C++ 带有默认参数的结构,可选择在构造函数中更改
- C++-将具有引用的长参数列表重构为结构
- 为私有结构定义双参数运算符重载
- 我们可以用参数化构造函数初始化结构的数组吗?
- 关于类的想法 参数结构给定实现
- 重映射模板参数结构
- 从C 调用的编译MATLAB函数的输入参数结构
- 如何实现具有不同参数结构的纯虚拟函数
- 如何在C++中获得可更改的函数参数结构
- 函数参数 -> 结构体成员的 void* 和常量 void* 的解决方案