-
Data: 2009-08-27 13:01:03
Temat: Re: szablony metod - deklaracja i definicja
Od: Tomasz Bywalec <t...@p...dont.spam.me.o2.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Megas pisze:
[...]
>
> template void foo<int>();
>
> Jaki jest cel ostatniej lini 'template void foo<int>(); ?? i czy mozna to
> samo zrobic w przypadku funkcji skladowej klasy??
>
Ta linijka powoduje że w tym miejscu szablon funkcji foo zostaje
rozwinięty (skonretyzowany) z parametrem <int> - to znaczy,
zostanie utworzona "konkretna" wersja funkcji, na podstawie
szablonu.
Zrobiłem u siebie mały test - poniższy przykład rozbity jest na 3 pliki,
u mnie działa, spróbuj może zaadaptować to na potrzeby swojego programu:
(całość działa u mnie, tyle że na VC++ 2008 EE).
==================
Plik tmp2.hpp
==================
#include <string>
namespace tmp {
// Zwyczajna klasa, z jednym szablonem metody.
class Printer {
public:
Printer( const std::string& prefix ) : prefix_( prefix ) {}
// Deklaracja szablonu metody (bez definicji).
template <class T> void print_type();
private:
std::string prefix_;
};
}
===================
Plik tmp2.cpp
===================
#include "tmp2.hpp"
#include <iostream>
namespace tmp {
// Definicja szablonu metody.
template <class T>
void Printer::print_type()
{
std::cout << prefix_ << ": " << typeid(T).name() << std::endl;
}
// Konkretyzacje szablonu dla trzech typow.
template void Printer::print_type<int>();
template void Printer::print_type<char>();
template void Printer::print_type<double>();
}
=========================
Plik tmp2-main.cpp (test)
=========================
#include "tmp2.hpp"
using tmp::Printer;
int main()
{
Printer p1( "aha" );
p1.print_type<int>();
p1.print_type<char>();
p1.print_type<double>();
// z tym nie dziala (blad kompilacji): p1.print_type<float>();
// czego oczywiscie nalezalo sie spodziewac.
}
===========================
Pozdrawiam,
Tomek Bywalec
Następne wpisy z tego wątku
- 27.08.09 13:09 Megas
- 27.08.09 13:16 Tomasz Bywalec
- 27.08.09 13:22 Megas
- 27.08.09 13:23 Megas
- 27.08.09 13:33 Megas
- 27.08.09 13:51 Arek (G)
- 27.08.09 13:55 Tomasz Bywalec
- 27.08.09 14:39 Megas
- 27.08.09 15:06 Megas
Najnowsze wątki z tej grupy
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
Najnowsze wątki
- 2025-07-14 Awaria VM?
- 2025-07-14 Gdańsk => Programista Kotlin <=
- 2025-07-14 Warszawa => Junior Rekruter <=
- 2025-07-14 Warszawa => Specjalista rekrutacji IT <=
- 2025-07-14 Wkłady do zniczy...
- 2025-07-14 Warszawa => Specjalista ds. Sprzętu Komputerowego <=
- 2025-07-14 Re: PO chroniło i chroni policyjnych bandziorów [zawiasy za katowanie obywatela (Poznań czerwiec 2012)]
- 2025-07-14 Warszawa => International Freight Forwarder <=
- 2025-07-14 Warszawa => Recruiter 360 <=
- 2025-07-14 Re: Rz?Âd ZAKAZUJE magazyn?Â?w energii ?!! Nowe prawo od 14 lipca to SZOK! ??Â
- 2025-07-14 Warszawa => Sales Assistant <=
- 2025-07-13 Fałszywe alerty
- 2025-07-12 dlaczego gadacie z tym debilem
- 2025-07-13 Unia Europejska przygotowuje nowy podatek
- 2025-07-13 Unia Europejska przygotowuje nowy podatek