首页 > 后端开发 > C++ > 正文

如何在 C 0x 中使用初始化列表初始化成员数组?

Mary-Kate Olsen
发布: 2024-11-02 17:25:29
原创
727 人浏览过

How to Initialize Member Arrays with Initializer Lists in C  0x?

使用初始值设定项列表初始化成员数组

在 C 0x 中,尝试使用初始值设定项列表初始化成员数组时,可能会遇到“赋值中的类型不兼容”错误.

要解决此问题,请考虑使用可变参数模板构造函数:

<code class="cpp">struct foo {
    int x[2];
    template <typename... T>
    foo(T... ts) : x{ts...} {}
};

int main() {
    // Usage
    foo f1(1, 2);   // OK
    foo f2{1, 2};   // Also OK
    foo f3(42);    // OK; x[1] zero-initialized
    foo f4(1, 2, 3); // Error: too many initializers
    foo f5(3.14);  // Error: narrowing conversion not allowed
    foo f6("foo"); // Error: no conversion from const char* to int
}</code>
登录后复制

如果不需要保留“const”状态,您也可以使用函数来加载数组值:

<code class="cpp">struct foo {
    int x[2];
    foo(std::initializer_list<int> il) {
        std::copy(il.begin(), il.end(), x);
    }
};</code>
登录后复制

但是,这种方法放弃了编译时边界检查。

以上是如何在 C 0x 中使用初始化列表初始化成员数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!