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

我正在尝试为该类编写静态初始值设定项:

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 }
};

本文翻译自 https://stackoverflow.com/questions/24237122/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

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


相关文章:

c++ - 如何将成员函数指针传递给带有常规函数指针的函数?

c++ - 必须调用Functor->对非静态成员函数的引用

c++ - 自定义词典类C ++中的段错误

c - 联合中的结构在将意外数据分配给字节数组后获取意外数据

c++ - 在编译时将std :: map的选定元素初始化为相同的值

c++ - 如何以编程方式查找为Linux中的特定网络设备配置的IP地址/网络掩码/网关?

c - 在yacc文件中使用联合

c++ - 以7位访问8位数据

c++ - 在C / C ++中是否有任何方法可以检测代码是否在静态初始化期间运行?

c++ - 是否可以确保仅在“静态初始化”步骤期间调用函数