C ++ 11 initializer_list不为嵌入的对象的文字恒定值工作?

问题描述 投票:1回答:1

我有在C ++ 11一个简单的程序:

struct A{
    int i;
    struct B{
        int i;
        int j;
    };
} a = {2, {3, 4}};

克++ - 7个编译并给出错误:

error: too many initializers for 'A'
 }a={2,{3,4}};
            ^

我只是不知道如何可以声明使用文字常量的对象,如何解决呢?

非常感谢。

c++ c++11 initializer-list aggregate-initialization
1个回答
3
投票

由于您的型A只包含(类型int)一个单一的数据成员,你可以在你的初始化至多有一个元素:

struct A{
    int i;
    struct B{
        int i;
        int j;
    };
} a = {2};   // OK, a.i == 2

(即A还包含一个型部件(A::B)的事实是不重要的创作类型A的对象。)

© www.soinside.com 2019 - 2024. All rights reserved.