代码之家  ›  专栏  ›  技术社区  ›  Hind Forsum

c++11初始值设定项_列表对嵌入对象的文本常量值不起作用?

  •  1
  • Hind Forsum  · 技术社区  · 7 年前

    我用c++11编写了一个简单的程序:

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

    g++-7编译并给出错误:

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

    我只是想知道如何使用文字常量声明一个对象,如何修复它?

    谢谢。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Kerrek SB    7 年前

    因为你的类型 A 仅包含一个数据成员(类型为 int

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

    (事实上 A. 还包含类型成员( A::B )对于类型对象的创建是无关紧要的 A.