c++ - 静态初始化数组 union 结构

标签 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++ - 静态初始化数组 union 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24237122/

相关文章:

c++ - 在 OpenGL 中播放动画

c++ - 我在尝试计算涉及数组的总和和平均值时遇到问题

Java - 静态初始化

c++ - Qt 信号参数线程安全

c++ - cygwin pthread_mutex_timedlock 代理

c++ - union 概念困惑

c - 结构和 union 名称冲突

c - 与具有灵活数组成员的匿名结构 union

c++ - 动态库中共享库的静态初始值设定项

c++ - 为什么静态初始化顺序仍然未指定?