[ vilyu @ 15.09.2005. 09:56 ] @
Zdravo, Pisem neku klasu i u zelji da moj kod bude dobro organizovan, odlucio sam da je odvojim od koda sa main funkcijom. Prebacio sam je u drugi cpp fajl, inkludovao ga, a onda je kompajler poceo da prijavljuje: multiple definition of member function za konstruktor moje klase koji je definisan izvan tela klase, a u istom fajlu gde i klasa. Pretrazio sam Google i ES i ustanovio da je resenje da definicije (interfejs klase) izdvojim u adekvatne header fajlove, koje bih ogradio pretprocesorskim direktivama da se ne ucitavaju vise puta, a da implementaciju stavim u cpp fajlove. E sad, obicno su se tu zavrsavali svi komentari koje sam nasao na Google-u i ES-u, jer su se u tom momentu postavljaci pitanja zahvaljivali na odgovoru i sve im je radilo. Meni sada kompajler prijavljuje: - Kad u header stavim samo Code: variable MojaKlasa Objekat has initializer but incomplete typeclass MojaKlasa; - Kad (u header) stavim Code: dobijem: expected class-name before "{" tokenclass MojaKlasa : public Window {}; - Kad u konstruktoru klase ostavim u listi inicijalizacija poziv konstruktora roditeljske klase, onda kaze da u klasi nemam datog polja (s imenom pozvanog konstruktora) - OK, sad i to izbacim iz deklaracije, ostaje naveden konstruktor sa navedenim tipovima argumenata koje dobija. Kao novu gresku, kompajler za implementaciju konstruktora prijavljuje da redefinisem prethodno definisanu f-ju - I tako jos neki pokusaji, ali nista nisu urodili plodom Dakle: Kako se pravilno stavljaju klase u druge fajlove? Hvala! |