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:
class MojaKlasa;
variable MojaKlasa Objekat has initializer but incomplete typeclass MojaKlasa;
- Kad (u header) stavim
Code:
class MojaKlasa : public Window {};
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!
Pera električar 0637129710, BG, preporučujem.