-
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!new
sfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.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:01:03 +0200
Organization: TP - http://www.tp.pl/
Lines: 85
Message-ID: <h7606u$5st$1@atlantis.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>
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: atlantis.news.neostrada.pl 1251378208 6045 79.191.74.73 (27 Aug 2009
13:03:28 GMT)
X-Complaints-To: u...@n...neostrada.pl
NNTP-Posting-Date: Thu, 27 Aug 2009 13:03:28 +0000 (UTC)
User-Agent: Thunderbird 2.0.0.23 (Windows/20090812)
In-Reply-To: <h75uui$85l$1@news.onet.pl>
Xref: news-archive.icm.edu.pl pl.comp.programming:183362
[ ukryj 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
- 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
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-11-25 Karty przedpłacone (podarunkowe) Google Play - pytanie do korzystających
- 2024-11-26 wina Tóska
- 2024-11-26 Rewolucja/Rewelacja!
- 2024-11-25 grupa ożyła ;)
- 2024-11-24 Być jak Clint
- 2024-11-24 Rura kanalizacja konceptu Franke = problem
- 2024-11-25 Wrocław => Lead Java EE Developer <=
- 2024-11-25 Warszawa => Business Development Manager - Network and Network Securit
- 2024-11-25 Kraków => Programista Full Stack (.Net Core) <=
- 2024-11-25 Lublin => Senior PHP Developer <=
- 2024-11-25 Karlino => Konsultant wewnętrzny SAP (FI/CO) <=
- 2024-11-25 Warszawa => ECM Specialist / Consultant <=
- 2024-11-25 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-11-25 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2024-11-25 Lublin => Inżynier Serwisu Sprzętu Medycznego <=