Radim projekat za fakultet (Operativni sistemi 2 na ETF-u) i imam problem.
Imam klasu FS koja mi je unapred data i koju ne smem da menjam. Ova klasa ima neke metode za rad sa fajl sistemom. Sadrži i pokazivač
KernelFS* myImpl;
KernelFS je klasa koju ja treba da implementiram. Korisnik radi sa klasom FS i kada pozove neku metodu (npr. FS::mount(Partition* p)), ja samo treba da to prosledim (return myImpl->mount(p)).
Dakle, klasa KernelFS je ono "pravo" jezgro sistema i u njoj se obavljaju svi poslovi.
KernelFS sadrži sledeća polja:
Code:
static bool available[26]; // da li je slobodno slovo za particiju?
static Partition* parts[26]; // niz pokazivaca na montirane particije
static FileTable* ft; // tabela za evidenciju otvorenih fajlova
(sve je public)static bool available[26]; // da li je slobodno slovo za particiju?
static Partition* parts[26]; // niz pokazivaca na montirane particije
static FileTable* ft; // tabela za evidenciju otvorenih fajlova
Imam metodu char KernelFS::mount(Partition* partition) u kojoj pokušavam da uradim sledeće:
Code:
while (!available[i]) { // probao sam i while (!KernelFS::available[i])
/* radi nesto */
i++;
}
while (!available[i]) { // probao sam i while (!KernelFS::available[i])
/* radi nesto */
i++;
}
I program mi pukne kad dođe dovde. Uspeo sam da ukapiram da je problem (ili jedan od problema) u tome što nizovi available i parts nisu inicijalizovani. I klasa FS i klasa KernelFS imaju svoje konstruktore, ali problem je u tome što ih main nikada ne poziva, već samo pristupa static metodama (recimo Partition* p=...; FS::mount(p);).
Moje generalno pitanje glasi - kako da inicijalizujem neki static niz a da to ne bude u konstruktoru te klase? I konkretno, kako da rešim ovaj problem?
P.S.
Da, coding skills su mi na minimumu, poslednji put sam aktivno koristio C++ pre 6-7 godina. A na netu nikako ne uspevam da nađem ovo što mi treba.
Hvala unapred.