[ Fiki035 @ 22.07.2011. 19:20 ] @
Imam jedan problem, naime imam jednu klasu PCBList koja je opremljena raznim metodama za baratanje sa listama, e sada napravio sam jedan staticki objekat ove klase tj static PCBList *blockLista = new PCBLista;
u svim klasama gde treba da pristupam ovom statickom objektu stavio sam extern PCBList *blockLista; medjutim linker mi prijavljuje gresku da blockLista nije definisana, sta moze da bude problem?
[ the_tosic @ 22.07.2011. 19:44 ] @
Ako si napravio staticku promenjivu u nekom fajlu (ne staticka metoda u klasi), ta promenjiva je vidljiva samo u tom c/cpp fajlu.

Ovo je fin tutorial http://www.cprogramming.com/tutorial/statickeyword.html

Takodje pazi kad kreiras i inicijalizujes static promenjive u funkciji.

Code:
void foo(){
      static int i = 0;
      if(!i) i++;
}


Ovaj if ce se samo jednom izvrsiti jer se static promenjiva u funkciji inicijalizuje prilikom kompajliranja. Ukoliko hoces svaki put da udjes u if moras da napises ovako:


Code:
void foo(){
      static int i;
      i = 0;
      if(!i) i++;
}

[ Texas Instruments @ 23.07.2011. 18:13 ] @
Vidim radi se projekat iz OS1. :))
Samo napred!
[ X Files @ 23.07.2011. 20:15 ] @
Za pocetak razmisli o svim klasama koje treba da postoje u projektu i sta cemu treba da pristupi. Najcesce ti ne treba ni "static" ni "extern" da resis problem.
[ chaami @ 25.07.2011. 01:05 ] @
Ne može to tako. extern koristiš za globalne promenjive da bi bile vidljive u drugim fajlovima.
Ti si tvoj objekat stavio u neku funkciju i pošto on nije globalni extern ti je tu beskorisan.
Izvadi objekat iz funkcije da ti bude globalan, izbriši mu to static i onda koristi extern da bi ga video u drugim fajlovima,
mada bi najbolje bilo da poslušaš glas razuma (X Files) i da promeniš metode pristupa.