Cześc mam pewien problem pod VC++2005
Poniżej jest prosty kod aplkacji, który się ładnie kompiluje. Jednak problem następuje, gdy deklaracje i implementacje klasy rozdziele na dwa pliki klasa.h i klasa.cpp
Wywala wtedy błąd linkera
"public: int __thiscall klasa<int>::foo(void)" (?foo@?$klasa@H@@QAEHXZ) referenced in function _wmain
Oczywiście nie zapominam o #include "klasa.h" Taki sam błąd wywala pod g++.
template<class typ>class klasa
{
private:
typ a;
public:
typ foo();
};
//w pliku .cpp dodaje #include "klasa.h"
template<class typ>typ klasa<typ>::foo()
{
return a;
}
//w przypadku podziału na pliki dodaje #include "klasa.h"
int _tmain(int argc, _TCHAR* argv[])
{
klasa<int> a;
a.foo();
return 0;
}