添加继承后,为什么我的副本列表初始化停止工作?

时间:2015-08-23 02:51:51

标签: c++ inheritance struct initializer-list

我已经用这种方式初始化我的一个结构,并且在很长一段时间没有任何问题:

struct MyStruct
{
    float firstArr[4];
    float secondArr[4];
    float thirdArr[4];
    float fourthArr[4];
};

void Function()
{
    std::vector<MyStruct> myArr;

    myArr.push_back // This works fine
    ({
        { 0, 0, 0, 0 },
        { 0, 0, 0, 0 },
        { 0, 0, 0, 0 },
        { 0, 0, 0, 0 }
    });
}

当我开始从父级派生我的结构时,我不能再这样做了。

struct Parent
{
    // Nothing
};

struct MyStruct: Parent
{
    float firstArr[4];
    float secondArr[4];
    float thirdArr[4];
    float fourthArr[4];
};

void Function()
{
    std::vector<MyStruct> myArr;

    myArr.push_back // This gets compiler errors
    ({
        { 0, 0, 0, 0 },
        { 0, 0, 0, 0 },
        { 0, 0, 0, 0 },
        { 0, 0, 0, 0 }
    });
}

第二个代码块在尝试初始化时会出现编译器错误。

是否有一个我可以声明的构造函数,它允许我像这样初始化并仍然从另一个派生出我的结构?我不知道为什么它首先给我一个错误,特别是因为父结构是空的。

我的整个项目推回了它的孩子&#34;像这样的结构,所以有什么方法可以包括我改变每一个初始化器吗?

稍后我需要将MyStruct个对象推回到std::vector<Parent>,这可能完全独立于初始化问题,但我似乎无法获得先解决这个问题。

0 个答案:

没有答案