[英]How to place partially initialized struct object into a vector?
我目前有结构,我只初始化三个成员中的两个。 我故意这样做,因为在创建期间我不确定该值是多少(我很好,因为它只是零)。
struct my_data {
my_data(int x_, int y_) {
x = x_;
y = y_;
}
int x;
int y;
double z = 0;
};
int main() {
std::vector<my_data> my_vec;
my_vec.resize(10);
my_vec[0] = {3,4};
}
当我这样做时,我收到error: no matching function for call .... _T1(std::forward<Args ..
有什么办法可以避免此错误,或者我还必须在构造函数中也将z
包含在内作为参数。
您需要一个默认的构造函数:
my_data() = default;
FWIW,通过删除构造函数和z
的默认值,可以使my_data
易于使用。
struct my_data {
int x;
int y;
double z;
};
int main() {
std::vector<my_data> my_vec;
my_vec.resize(10);
my_vec[0] = {}; // Same as = {0, 0, 0};
my_vec[1] = {3}; // Same as = {3, 0, 0};
my_vec[2] = {3, 4}; // Same as = {3, 4, 0};
my_vec[3] = {3, 4, 2.0};
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.