Wzorzec template - linker error

0

Witam, mam wzorzec i jeśli wszystko jest zdefiniowane w jednym pliku jest ok, działa, ale jeśli wzorzec jest w osobnym pliku i tworzę obiekt gdzieś w aplikacji np główna forma to linker wywala error. Przykładowo:

//Unit1.h:
template <class T1, class T2>
class Test
{
  T1 te1;
  T2* te2;
public:
  Test();
};
typedef Test<int, int> TestInt;

//Unit1.cpp:
template <class T1, class T2>
Test<T1, T2>::Test()
{}

//MainUnit.h:
#include "Unit1.h"

TestInt testint;

i dostaje linker error Unresolved external 'Text<int, int>()' ale jak klasa Test jest w MainUnit.h jest ok i działa. O co chodzi?

1

Jeżeli korzystasz z template to deklaracje i definicje funkcji korzystających z nich muszą być w 1 pliku(nagłówkowym). Tak jest i trzeba się tego niestety trzymać. Podobno wprowadzono jakąś poprawkę w tej kwestii, ale nie działa ona w każdym kompilatorze, więc specjalnie się tym nie interesowałem.

0

Ok, dzięki, faktycznie jak wszystko wrzuciłem do jednego pliku nagłówkowego to działa tylko wygląda nie ciekawie bo klasa nieco spora jest hehe

1 użytkowników online, w tym zalogowanych: 0, gości: 1