Как обнулить элементы массива, когда мой компилятор не соответствует стандарту
Мой компилятор (C ++ Builder6) синтаксически разрешает инициализацию членов массива (по крайней мере, с нуля), но на самом деле это не так. Таким образом, утверждение в приведенном ниже примере не выполняется в зависимости от контекста.
#include <assert.h>
struct TT {
char b[8];
TT(): b() {}
};
void testIt() {
TT t;
assert(t.b[7] == 0);
}
Смена компилятора на данный момент не вариант. Мой вопрос: что будет лучшим способом «починить» этот недостаток в отношении будущей переносимости и соответствия стандартам?
Редактировать: Как оказалось, мойпервый пример былслишком короткий, Он упустил момент, что уровень заполнения массива настолько важен, что его нужно хранить очень близко к массиву, то есть: в том же классе.
Даже еслиоригинальная проблема остаетсяМоя настоящая проблема обычно такова:
struct TT2 {
int size;
char data[8];
// ... some more elements
TT2(): size(0), data() {}
// ... some more methods
};