0
在我的主,我從一個模板類創建一個對象,然後我把我的排序方法(模板法) 但是它讓我main.obj文件中的錯誤。如何將數組傳遞給模板函數?
錯誤:
LNK2019: unresolved external symbol "public: void __thiscall SelectionSort<int [0]>::IterativeSort(int * const,unsigned int)" ............
呼叫主:
SelectionSort<int[]> smallArraySort;
smallArraySort.IterativeSort(smallArray, smallSize);
頭文件SelectionSort.h
template <class T>
class SelectionSort
{
public:
void IterativeSort(T data, unsigned int size);
void RecursiveSort(T data, unsigned int size);
};
排序代碼:SelectionSort.cpp
#include "SelectionSort.h"
template<class T>
void SelectionSort<T> ::IterativeSort(T data, unsigned int size)
{
int temp = data[0];
int greaterNum = 0
for (unsigned int index = 0; index < size; index++)
{
for (unsigned int inner = index; inner < size; inner++)
{
if (temp>data[inner])
{
greaterNum = temp;
temp = data[inner];
data[inner] = greaterNum;
}
}
}
}
是的,它被包括在內 – 2014-10-18 06:32:11
讓我們問一個稍微有點不同的問題:SelectionSort :: IterativeSort的*實現是否已經在這裏發佈了,它包含在'main.cpp'它)?即其*不*執行一些其他.cpp文件(因爲你在這裏),*右*? –
WhozCraig
2014-10-18 06:34:48
那麼,與文件名的更新回答了這個問題。 [見這個問題](http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file)。 – WhozCraig 2014-10-18 06:48:44