gpt4 book ai didi

c++ - 将聚合初始化为类成员

转载 作者:搜寻专家 更新时间:2023-10-31 02:18:34 24 4
gpt4 key购买 nike

在这段代码中:

#include <array>
#include <cstdint>

struct K {
std::array<char, 4> a;
std::uint8_t b;
};

const K k1 = { {'T', 'e', 's', 't'}, 1 };

class X {
const K k2 = { {'A', 'b', 'c', 'd'}, 2 };
};

我可以初始化一个全局对象 k1 就好了。但是尝试在类成员 k2 的默认初始化器上使用相同的语法会产生编译器错误(来自 g++-4.8.2 和 g++-5.2.0 的类似错误):

main.cpp:12:44: error: array must be initialized with a brace-enclosed initializer
const K k2 = { {'A', 'b', 'c', 'd'}, 2 };
^
main.cpp:12:44: error: too many initializers for 'std::array<char, 4ul>'

在声明时初始化 k2 的正确方法是什么?

最佳答案

你只需要一副额外的牙套:

class X {
const K k2 = { {{'A', 'b', 'c', 'd'}}, 2 };
};

关于c++ - 将聚合初始化为类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34404667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com