如何初始化構造函數中以下結構體的值爲定義的值?如何初始化構造函數中的位字段
在我的代碼示例中顯示這兩個選項似乎有點難看....
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;
};
如果您在類中具有虛函數,那麼請小心'memset'選項,因爲它也會覆蓋該vtable。 – 2012-01-17 13:23:56
可怕的命名約定。遺產,我猜?無論如何,'fReserve80_0(0)'是標準的方式,實際上比memset更難看,更易於維護和類型安全。 – 2012-01-17 13:31:18
@phresnel:Ooooh yes ... :-(傳統代碼在新機器上使用時停止工作 – 2012-01-17 13:33:22