У меня есть эти классы:Инициализировать статический массив в C++
class FS{
static char mount(Partition* p)
{return myImpl->mount(p);}
/*...*/
KernelFS* myImpl;
};
class KernelFS{
char mount(Partition* p){
/*...*/
while(available[i]) i++;
}
/*...*/
static bool available[26];
};
Основная программа использует только статические функции от FS, например:
void main(){
Partition* p=/*...*/;
FS::mount(p);
/*...*/
}
Когда FS :: монтаж (р) называется, его вызывает myImpl-> mount (p) (что является функцией класса KernelFS). И вот проблема. Когда дело доходит до
while(available[i]) i++;
... это ломается! Я думаю, проблема в том, что я не инициализировал доступный массив [26], и я понятия не имею, как это сделать ... Что еще может быть проблемой? Пожалуйста помоги.
Btw, главный() никогда не создает FS или KernelFS объектов, так что я думаю, что нет никакой пользы конструкторов ...
'KernelFS * myImpl;' объявлен статическим, правильно? – dasblinkenlight
Возможно [инициирование заказа] (http://stackoverflow.com/q/335369/318716) связано? –
это уже было рассмотрено в [другом вопросе] (http://stackoverflow.com/questions/1065774/cc-initialization-of-a-normal-array-with-one-default-value) –