1

我在 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}};
            ^

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

非常感谢。

4

1 回答 1

3

由于您的类型A仅包含一个数据成员(类型为int),因此您的初始化程序中最多可以有一个元素:

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

A(还包含类型成员 ( )的事实A::B对于创建类型的对象并不重要A。)

于 2019-02-06T00:57:28.493 回答