c++ - 静态初始化数组并集的结构

原文 标签 c++ unions static-initialization static-initializer

我正在尝试为此类编写静态初始化器:

class Cube3x3
{
    union CornerData
    {
        u8  mData8[8];
        u32 mData16[4];
        u32 mData32[2];
        u64 mData64;
    };

    union EdgeData
    {
        u8  mData8[12];
        u32 mData32[3];
    };

    CornerData mCorners;
    EdgeData mEdges;

    static const Cube3x3 sSolved;
};

我已经尝试过了,而且有很多变体,但似乎没有任何尝试可以奏效。
const Cube3x3 Cube3x3::sSolved =
{
    { 0, 0, 1, 0, 0, 0, 1, 0 },
    { 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 }
};

有谁知道如何静态地初始化它?

最佳答案

如果您愿意将Cube3x3从类更改为结构,则可以使用:

const Cube3x3 Cube3x3::sSolved = {0};

更新

使用结构时,也可以使用非零值初始化成员,就像在更新的问题中一样。
const Cube3x3 Cube3x3::sSolved =
{
    { 0, 0, 1, 0, 0, 0, 1, 0 },
    { 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 }
};

相关文章:

c++ - 仅标题环境中C ++中的访问者模式

c - 为什么打包不能在同级联合或结构中起作用

c++ - 联合内部结构的C ++访问成员

c++ - 在统一的内联初始化中使用不可复制的值初始化静态std :: map

c# - .NET 4.x发生了重大变化:如果在反序列化期间首次调用默认ctor,则释放模式不能正确执行静态初始化程序

c# - C#中的集合初始化器

c++ - 解决boost.python中的重载

c++ - 用空格代替ASCII字符

c++ - 在构造函数和析构函数中打印值

c - 来自C中单独文件的联合变量