繁体   English   中英

如何将部分初始化的struct对象放入向量中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM