如何在构造函数中将以下结构的值初始化为定义的值?
我的代码示例中显示的两个选项似乎都有点难看......
struct T_AnlagenInfo01
{
// Option A
T_AnlagenInfo01() : fReserve80_0(0), fReserve80_1(0),.... {};
// Option B
T_AnlagenInfo01()
{
memset(this, 0, sizeof(T_AnlagenInfo01));
}
unsigned long fReserve80_0 : 1;
unsigned long fReserve80_1 : 1;
unsigned long fReserve80_2 : 1;
unsigned long fReserve80_3 : 1;
unsigned long fReserve80_4 : 1;
unsigned long fReserve80_5 : 1;
unsigned long fReserve80_6 : 1;
unsigned long fReserve80_7 : 1;
unsigned long fReserve81_0 : 1; // 81
unsigned long fReserve81_1 : 1;
unsigned long fReserve81_2 : 1;
unsigned long fReserve81_3 : 1;
unsigned long fReserve81_4 : 1;
unsigned long fReserve81_5 : 1;
unsigned long fReserve81_6 : 1;
unsigned long fReserve81_7 : 1;
};
Run Code Online (Sandbox Code Playgroud)
一个明显的解决方案是将所有位放入一个单独的结构中,该结构是结构的成员,并从静态成员复制初始化它,例如:
struct T_AnlagenInfo01
{
struct Bits
{
unsigned long fReserve80_0 : 1;
unsigned long fReserve80_1 : 1;
// ...
};
Bits myBits;
static Bits initialBits;
T_AnlagenInfo01 : myBits(initialBits) {}
};
T_AnlagenInfo01::Bits T_AnlagenInfo01::initialBits = {};
Run Code Online (Sandbox Code Playgroud)
这甚至允许某些位具有不同于 0 的值。
| 归档时间: |
|
| 查看次数: |
1413 次 |
| 最近记录: |