在emplace_back()中初始化内部结构

时间:2019-05-31 13:28:19

标签: c++ vector struct

我有一个包含内部结构数组的结构。我想使用emplace_back()的方法vector<my_struct>。但是我不知道如何正确初始化该结构:

struct my_struct
{
    struct
    {
        float x, y, z;
    } point[3];
};

std::vector<my_struct> v;

v.emplace_back(
    {0, 0, 0},
    {0, 0, 0},
    {0, 0, 0}
);

这会导致编译错误error: no matching function for call to ‘std::vector<main()::my_struct>::emplace_back(<brace-enclosed initializer list>, <brace-enclosed initializer list>, <brace-enclosed initializer list>)

是否可以emplace_back此结构(我正在使用C ++ 17)?我应该编写自定义构造函数吗?

1 个答案:

答案 0 :(得分:3)

这如何:

v.push_back(my_struct{{{0, 1, 2}, {3, 4, 5}, {6, 7, 8}}});