-
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!new
sfeed.neostrada.pl!nemesis.news.neostrada.pl!atlantis.news.neostrada.pl!news.ne
ostrada.pl!not-for-mail
From: Tomasz Bywalec <t...@p...dont.spam.me.o2.pl>
Newsgroups: pl.comp.programming
Subject: Re: szablony metod - deklaracja i definicja
Date: Thu, 27 Aug 2009 15:55:07 +0200
Organization: TP - http://www.tp.pl/
Lines: 40
Message-ID: <h763r9$r70$1@nemesis.news.neostrada.pl>
References: <h741o5$vof$1@news.onet.pl> <h7462k$4vj$1@inews.gazeta.pl>
<h75on2$kj2$1@news.onet.pl> <h75uui$85l$1@news.onet.pl>
<h7606u$5st$1@atlantis.news.neostrada.pl> <h760hs$d12$1@news.onet.pl>
<h761ib$nsj$1@nemesis.news.neostrada.pl> <h761bk$fjh$1@news.onet.pl>
<h761ch$fn3$1@news.onet.pl> <h761ur$hfu$1@news.onet.pl>
NNTP-Posting-Host: aemw73.neoplus.adsl.tpnet.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: nemesis.news.neostrada.pl 1251381931 27872 79.191.74.73 (27 Aug 2009
14:05:31 GMT)
X-Complaints-To: u...@n...neostrada.pl
NNTP-Posting-Date: Thu, 27 Aug 2009 14:05:31 +0000 (UTC)
User-Agent: Thunderbird 2.0.0.23 (Windows/20090812)
In-Reply-To: <h761ur$hfu$1@news.onet.pl>
Xref: news-archive.icm.edu.pl pl.comp.programming:183369
[ ukryj nagłówki ]Megas pisze:
[...]
>
> Ciekawe jest to, ze w sytuacji, gdy deklaracje i definicje funkcji
> szablonowej klasy A umiescilem razem w jednym pliku *.h (projektu *.dll) to
> wykorzystanie tej funkcji poza projektem *.dll nie stwarzalo zdanych
> problemów.
Domyślam się że ten plik .h include'ujesz również w projektach
korzystających z dll'ki. W takim przypadku kompilator, podczas
kompilacji programu, zna definicje szablonu i rozwija go,
niezależnie od tego czy w dll'ce znajdują się skompilowane
konkretyzacje czy też nie - kompilator na tym etapie nie jest
w stanie tego "zgadnąć".
Ale osobiście wydaje mi się teraz, że niepotrzebnie brniemy
w to rozwiązanie. Skoro chcesz aby w dll'ce znajdowało się
tylko kilka konkretyzacji szablonu dla kilku typów, jednocześnie
wyrzucając całą definicję szablonu z pliku nagłówkowego, to i tak
ograniczasz użycie szablonu do właśnie tych kilku
typów. W takim razie równie dobrze możesz, zamiast szablonu metody,
zdefiniować kilka metod (o tej samej nazwie) dla kilku różnych typów
argumentu. Jeżeli, dla zdefiniowania tych metod, wygodnie Ci jest się
posłużyć szablonem to możesz go trzymać, najwyżej
pod inną nazwą, w całości w pliku .cpp, albo zostawić prywatną
deklarację w .h, a definicję w .cpp. Dodatkowo, programista korzystający
z tej dll'ki będzie od razu wiedział dla jakich typów zdefiniowana
jest ta metoda (w każdym razie błąd nastąpi już na etapie kompilacji
a nie linkowania).
Natomiast jeżeli chciałbyś jednak aby szablon działał dla różnych
możliwych typów T to i tak definicja musi trafić do pliku nagłówkowego
(w praktyce, na większości kompilatorów C++, nie da się tego uniknąć).
Przypuszczam, że z pomocą "extern templates" (o ile są w Visual C++ ?)
dałoby się ewentualnie skompilować konkretyzacje kilku typów i
umieścić je w bibliotece .dll. Pytanie tylko czy naprawdę jest
to gra warta świeczki ?
Pozdrawiam,
Tomek Bywalec
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
Najnowsze wątki
- 2025-01-04 reverse engineering i dodawanie elementów do istniejących zamkniętych produktów- legalne?
- 2025-01-04 w Nowym Roku 2025r
- 2025-01-04 Warszawa => Specjalista ds. IT - II Linia Wsparcia <=
- 2025-01-04 Warszawa => Java Developer <=
- 2025-01-04 Warszawa => Spedytor Międzynarodowy <=
- 2025-01-04 Warszawa => System Architect (Java background) <=
- 2025-01-04 Wrocław => Application Security Engineer <=
- 2025-01-04 Chrzanów => Specjalista ds. public relations <=
- 2025-01-04 Katowice => Key Account Manager (ERP) <=
- 2025-01-03 Problem z odczytem karty CF
- 2025-01-03 Jazda z Warszawy do Krakowa teslą
- 2025-01-03 Wrocław => Konsultant Wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-01-03 Warszawa => International Freight Forwarder <=
- 2025-01-03 Mińsk Mazowiecki => Area Sales Manager OZE <=
- 2025-01-03 Warszawa => Spedytor Międzynarodowy <=