[ vtomic85 @ 25.01.2012. 09:41 ] @
Pozdrav, 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: (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++; } 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. |