¿Cómo se inicializan los valores de la siguiente estructura en un constructor con los valores definidos?Cómo inicializar un campo de bit en un constructor
Ambas opciones que se muestran en mi ejemplo de código parecen ser un poco feo ....
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;
};
Tenga cuidado con la alternativa 'memset' si tiene funciones virtuales en la clase, ya que también sobrescribirá el vtable. –
Horribles convenciones de nomenclatura. Legado, ¿supongo? De todos modos, 'fReserve80_0 (0)' es la forma estándar, y en realidad menos fea y más fácil de mantener y segura que memset. –
@phresnel: Ooooh sí ... :-(Código heredado que dejó de funcionar cuando se usaba en una nueva máquina más rápida –