Przy wywołaniu szablonu tablicy wyskakuje mi taki komunikat:
error LNK2019: nierozpoznany zewnętrzny symbol "public: __thiscall TArray<float>::TArray<float>(unsigned int)" (??0?$TArray@M@@QAE@I@Z) przywołany w funkcji _main
Poczytałem coś o tym komunikacie, że być może nie zdefiniowałem jakiegoś konstruktora który był w pliku nagłówkowym, lecz coś takiego na pewno tu mi się nie mogło przytrafić.
Także prosiłbym o jakieś wytłumaczenie co w kodzie jest źle.
plik .h
template <typename T> class TArray
{
private:
unsigned m_nSize;
T* m_pArray;
public:
explicit TArray(unsigned nSize = 5);
TArray(const TArray& array);
T& operator[](unsigned uIndex) { return (uIndex < m_nSize) ? m_pArray[uIndex] : m_pArray[0]; }
T& operator=(const TArray& array);
int size() const { return m_nSize; }
~TArray() {delete[] m_pArray; }
};
plik .cpp (sam konstruktor ten pierwszy, nagłówkowy oczywiście dołączony)
template<typename T>
TArray<T>::TArray(unsigned nSize) : m_nSize(nSize)
{
m_pArray = new T[nSize];
}
wywołuję:
TArray<float> array(4);