Cómo poner a cero los miembros de la matriz cuando mi comstackdor no es compatible con la norma

Mi comstackdor (C ++ Builder6) permite de manera sintáctica la inicialización de miembros de la matriz (al menos con cero), pero en realidad no lo hace. Por lo tanto, la afirmación en el ejemplo que se da a continuación falla según el contexto.

#include  struct TT { char b[8]; TT(): b() {} }; void testIt() { TT t; assert(tb[7] == 0); } 

Cambiar el comstackdor no es una opción en este momento. Mi pregunta es: ¿cuál será la mejor manera de “reparar” esta falla con respecto a la futura portabilidad y conformidad con el estándar?


Edición: Como resultado, mi primer ejemplo fue demasiado corto . Se perdió el punto de que el nivel de relleno de la matriz es tan esencial, que debe almacenarse muy cerca de la matriz, que está: en la misma clase.

Incluso si el problema original permanece , mi patrón de problema real suele ser este:

 struct TT2 { int size; char data[8]; // ... some more elements TT2(): size(0), data() {} // ... some more methods }; 

Creo que puedes usar esto:

 TT() { std::fill(b, b + 8, char()); } 

¡De esta manera, resolverá su problema mientras nada esté mal con la portabilidad y la conformidad estándar!

Puede usar fill_n como se sugiere en: Inicialización de C / C ++ de una matriz normal con un valor predeterminado

Si no hay fill_n disponible, siempre puedes usar memset como:

 TT() {memset(b, 0, sizeof b);} 

Me gustaría añadir publicaciones anteriores que, si está utilizando una matriz de caracteres como una cadena, es suficiente escribir en el constructor.

TT () {b [0] = ‘\ 0’; }