Exportování šablony – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Exportování šablony – C / C++ – Fórum – Programujte.comExportování šablony – C / C++ – Fórum – Programujte.com

 

ONDRA0
Newbie
15. 11. 2007   #1
-
0
-

Když vytvořím šablonovou funkci, kterou uložím do samostatného soubotu nebo knihovny a exportuji ji pomoci hlavičkového souboru tak mi to napíše samozřejmě chybu linkeru, protože ta funkce pro daný datový typ neexistuje. Jak mám udělat aby to fungovalo?

např:
main.cpp

#include "funkce.h"


void main()
{
int a = 1;
int b = 2;
b = funkce(a);
}


funkce.cpp
template <class typ> typ funkce(typ prvni)

{
return prvni;
}


funkce.h
template <class typ> typ funkce(typ prvni);


Nahlásit jako SPAM
IP: 88.101.29.–
echo1120
Stálý člen
15. 11. 2007   #2
-
0
-

main.cpp

#include<iostream>

using namespace std;
#include "funkce.cpp"



int main() //`main' must return `int'

{

int a = 1;

int b = 2;

b = funkce(a);

cin.get();
return 0;
}

funkce.cpp
#include "funkce.h"

template <class typ> typ funkce(typ prvni)

{

return prvni;

}

funkce.h
template <class typ> typ funkce(typ prvni);

Zopár úprav a ide to. :smile2:

Nahlásit jako SPAM
IP: 62.168.75.–
ONDRA0
Newbie
15. 11. 2007   #3
-
0
-

To echo112 : Díky, to sice funguje, ale když chci udělat knihovnu tak mi to není nanic. Jak se to řeší v standartních knihovnách, kde se používají šablony - jako třeba knihovna string?

Nahlásit jako SPAM
IP: 88.101.29.–
Jura
~ Anonymní uživatel
637 příspěvků
16. 11. 2007   #4
-
0
-

Std::string, pokud je mi známo, nijak neřeší - zdrojáky si mužeš prohlídnout, stačí si najit hlavičkové soubory. A osobně jsem ještěnezkoušel cpát šablony do knihoven. A možná to už z principu šablon nepůjde - většinou se přece musejí překládat zároveň s projektem, proto se přeloží jen to, co je skutečně potřeba. Ale možná se ošklivě mýlím..

Nahlásit jako SPAM
IP: 85.207.192.–
Jonyzz0
Návštěvník
16. 11. 2007   #5
-
0
-

Je to tak ja říká Jura, šablony do knihoven nezkompiluješ, musíš je mít všechny nadeklarované v hlavičkových souborech, které pak připojíš k programu kde se přeloží.

Nahlásit jako SPAM
IP: 62.40.69.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 73 hostů

Podobná vlákna

C++ šablony — založil Kenvelo

Sablony #2 — založil Gadael

šablony a ukazatele — založil liamlim

Flash šablony — založil Jarda777

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý