Witam,
mój problem jest następujący: mam trzy pliki:
lista.h
#ifndef _LISTA_H
#define _LISTA_H
class Lista
{
public:
void Czesc();
};
#endif
oraz lista.cpp
#include "stdafx.h"
#include "lista.h"
void Lista::Czesc()
{}
i main.cpp
#include "stdafx.h"
#include "lista.h"
int _tmain(int argc, _TCHAR* argv[])
{
Lista l;
l.Czesc();
return 0;
}
i taki kod kompiluje się bez przeszkód. Jednak kiedy robię klasę jako szablonową:
lista.h
#ifndef _LISTA_H
#define _LISTA_H
template <class Typ>
class Lista
{
public:
void Czesc();
};
#endif
lista.cpp
#include "stdafx.h"
#include "lista.h"
template <class Typ>
void Lista<Typ>::Czesc()
{}
main.cpp
#include "stdafx.h"
#include "lista.h"
int _tmain(int argc, _TCHAR* argv[])
{
Lista<int> l;
l.Czesc();
return 0;
}
kompilator wywala następujące błędy:
Error 1 error LNK2001: unresolved external symbol "public: void __thiscall Lista<int>::Czesc(void)" (?Czesc@?$Lista@H@@QAEXXZ) G:\Moj_folder\Moje dokumenty\Visual Studio 2010\Projects\pk2-lab-lista_na_klasach\pk2-lab-lista_na_klasach.obj pk2-lab-lista_na_klasach
Error 2 error LNK1120: 1 unresolved externals G:\Moj_folder\Moje dokumenty\Visual Studio 2010\Projects\pk2-lab-lista_na_klasach\Debug\pk2-lab-lista_na_klasach.exe 1 1 pk2-lab-lista_na_klasach
ktoś wie dla czego tak się dzieje?
z góry dziękuje za odpowiedź
pozdrawiam