Citat:
Andross kaže:
Hvala za ovo.
Linker errore sam resio instanciranjem templejt klasa posto mi je implementacija i dalje odvojena, a koristicu samo odredjene tipove za T:
Kod:
template class Vec2d<int>;
template class Vec2d<float>;
Edit: Jos 2 pitanja:
1. Zasto si koristio typename U za operator ==
2. Koja je fora sa const pre i posle funkcije? Tipa const a(); b() const; const c() const;
|
Na ovo prvo pitanje ne umem da odgovorim, Belph je koristio gomilu onih ogavnih stvari iz standardne biblioteke, nije mi sve najjasnije.
2. Const pre funkcije označava da je povratna vrednost funkcije konstantna tj. da se ne može menjati. Const posle funkcije znači da funkcija ne može da menja stanje klase u kojoj se nalazi, pa može da se poziva i iz const objekata te klase. Na primer:
Kod:
class cls {
public:
int member1, member2;
void do_something() { member1 = 40; member2 = 20; }
int do_something_const() const { return member1*member2; } /* ne menja stanje klase */
};
...
const cls a;
cls b;
int x = a.do_something_const(); /* može, jer je funkcija const */
b.do_something(); /* može, funkcija nije const ali nije ni objekat */
a.do_something(); /* greška, objekat je const a funkcija nije! */
...