【发布时间】:2012-07-22 19:20:54
【问题描述】:
我在我的 cpp 函数中引用了一个模板化的快速排序方法,如下所示:
Main.cpp
QuickSort<vector<int>>(testData);
testData 在哪里:
int arr[] = {0, 5, 3, 4, 2, 1, 4};
vector<int> testData (arr, arr + sizeof(arr) / sizeof(arr[0]));
.h文件中quicksort的声明为:
排序.h
template <typename T>
void QuickSort(std::vector<T>& Unsorted);
而函数定义为:
排序.cpp
template <typename T>
void QuickSort(std::vector<T>& Unsorted)
{
//implementation here
}
我是不是疯了?我只是想通过引用传递一个整数向量。谁能告诉我哪里出错了?
【问题讨论】:
-
可能是因为
QuickSort<vector<int>>中的移位运算符?这是 C++0x 之前的任何问题,请参阅 here -
@Joost 将 impl 移到一个位置后会出现该问题,但大多数现代编译器已经区分了位移模板和嵌套模板