Witam
Mam otóż mam problem z linkerem VC++ 2010
Stworzyłem plik o nazwie np. XXX.hpp, a w nim klase DynArray:
template<class X> class DynArray
//tablica dynamiczna o wbudowanym alokatorze
//zawiera szereg funkcji zarzadzajacych tablica
//a takze zwykle operatory, by moc
//zarzadzac ta tablica jak wbudowanym typem
{
private:
X* Data; //tablica wlasciwa
X Empty; //pusty
Uint Capacity, //ilosc elementow
Size; //rozmiar
bool IsSort, //czy posortowana
IsClean; //czy czysta
public:
DynArray(const Uint StartSize);
DynArray(const Array<X>& Ref);
DynArray(const DynArray<X>& Ref);
~DynArray();
Uint Length();
Uint High();
Uint GetSize();
void Clear(); //czysci tablice
X& operator[] (const Uint Index);
};
A tu z pliku XXX.cpp zawarłem definicje metod z klasy DynArray:
#include "XXX.hpp"
template<class X>
DynArray<X>::DynArray (const Uint StartSize)
{
Capacity = StartSize;
Data = new X[Capacity];
Size = (sizeof(X)*Capacity);
IsSort = false;
IsClear = false;
};
template<class X>
DynArray<X>::DynArray (const DynArray<X>& Ref)
{
memcpy(Data, Ref.Data);
};
template<class X>
DynArray<X>::DynArray (const Array<X>& Ref)
{
memcpy(Data, Ref.Data);
};
template<class X>
DynArray<X>::~DynArray()
{
Clear();
};
template<class X>
void DynArray<X>::Clear()
{
if (Data != NULL)
{
delete [] Data;
Data = NULL;
} else return;
};
template<class X>
X& DynArray<X>::operator[] (const Uint Index)
{
if (Data != NULL)
return Data[Index];
else
return NULL;
};
template<class X>
Uint DynArray<X>::Length()
{
return Capacity;
};
template<class X>
Uint DynArray<X>::High()
{
return (Capacity-1);
};
template<class X>
Uint DynArray<X>::GetSize()
{
return Size;
};
niby wszytsko wygląda dobrze w pliku main.cpp
#include <iostream>
#include <conio.h>
#include "E:\CSE 1\Resoruces\XXX.hpp"
using namespace std;
int main()
{
DynArray<int> ArrayTest(349);
ArrayTest[123] = ArrayTest.Length();
cout << ArrayTest.Length();
getch();
};
Lecz linker wywala przykładowy błąd:
error LNK2001: unresolved external symbol "public: int & __thiscall DynArray<int>::operator[](unsigned int)" (??A?$DynArray@H@@QAEAAHI@Z)
Pytanie: Czy w XXX.cpp jest coś źle, czy linker wariuje?