Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Još nešto u vezi template klasa

[es] :: C programiranje :: Još nešto u vezi template klasa

[ Pregleda: 1195 | Odgovora: 4 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1296
*.46.EUnet.yu

Sajt: www.mycity.co.yu


Profil

icon Još nešto u vezi template klasa26.04.2003. u 00:03

Tata, čitao sam onaj tvoj text o templates-ima, i zaprepastio se kad sam probao svoju template klasu da odvojim u poseban object fajl :)
Shvatio sam da se template kompajlira u main.cpp, ali me sada kopka drugo nešto.

Uzmimo na primer da hocu svoje template klasu da distribuiram kao lib.
Dakle, iskompajlira se sve, dobijem .lib fajl (ili .a kod gcc-a), i kako sad da neko koristi tu template klasu, a da ne kompajlira i template klasu, zamisli da nema sors od te template klase?
Kako je to rešeno recimo u boost biblioteci, ili u STL biblioteci?
26.04.2003. u 00:03 

Dragi Tata

Član broj: 1958
Poruke: 3874
199.171.112.*

Sajt: www.novetehnologije.com


Profil

icon Re: Još nešto u vezi template klasa26.04.2003. u 00:20
Ukratko, ne može.

Da bi napravio klasu od šablona (specijalizaciju) moraš da imaš izvorni kod.

Sve template biblioteke (STL, Boost, pa čak i MS-ove biblioteke ATL i WTL) su distribuirane kao izvorni kod (kladim se da je Leka veliki obožavalac šablona :) )
26.04.2003. u 00:20 

Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1296
*.21.EUnet.yu

Sajt: www.mycity.co.yu


Profil

icon Re: Još nešto u vezi template klasa26.04.2003. u 12:41
Ajd mi onda objasni ovo:
Code:

#include <vector.h>

int main ()
{
  vector<int> v1;
}


Ovde se ukljucuje header.

Jedino ako je vector<int> ugradjen (vec iskompajliran) tip, u samu STL biblioteku?
26.04.2003. u 12:41 

filmil
Filip Miletić
Oce Technologies B.V., inženjer hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.dial.tiscali.nl

Jabber: filmil@jabber.org
ICQ: 36601391


Profil

icon Re: Još nešto u vezi template klasa26.04.2003. u 13:38

Za koje pitanje je ovaj odgovor? :))

Biblioteke šablona moraju da dolaze u sorsu. Šablone (laički) zamišljam samo kao malko naprednije (i type checked) #define direktive. Oni su tu samo i isključivo da bi ti uštedeli kucanje.

Zato ni ne možeš da imaš kompajlirane biblioteke šablona. Sa druge strane ako napraviš vektor intova, napravio si specijalizaciju šablona, tj. popunio sve parametre hipotetičnog #define-a tako da je rezultat kod koji se može prevesti.

Dakle: ako želiš da argument šablona može da bude parametar, i da korisnik šablona može da bira njegov tip pre korišćenja, onda davanje sorsa ne možeš izbeći.

Ali ako u kodu napraviš specijalizaciju nekog šablona, dakle fiksiraš parametre, rezultujuće klase se mogu prevesti sasvim regularno kao i smestiti u biblioteku. Jedino što ćeš ti, jelte, i u tom slučaju da daš izvorni kod. :)) Open source.

f
26.04.2003. u 13:38 

Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1296
*.9.EUnet.yu

Sajt: www.mycity.co.yu


Profil

icon Re: Još nešto u vezi template klasa26.04.2003. u 13:46
evo sad pogledah std_vector.h, iako je header, u njemu je ceo sors :)
26.04.2003. u 13:46 

[es] :: C programiranje :: Još nešto u vezi template klasa

[ Pregleda: 1195 | Odgovora: 4 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.