首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++11 initializer_list不适用于嵌入对象的文本常量值?

c++11 initializer_list不适用于嵌入对象的文本常量值?
EN

Stack Overflow用户
提问于 2019-02-06 00:54:15
回答 1查看 35关注 0票数 1

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

代码语言:javascript
复制
struct A{
    int i;
    struct B{
        int i;
        int j;
    };
} a = {2, {3, 4}};

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

代码语言:javascript
复制
error: too many initializers for 'A'
 }a={2,{3,4}};
            ^

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

非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-06 00:57:28

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

代码语言:javascript
复制
struct A{
    int i;
    struct B{
        int i;
        int j;
    };
} a = {2};   // OK, a.i == 2

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54545252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档