考虑以下代码:技术上,集合是一个带有sort方法的向量。
// All views extend this base template
doctype html
html
head
body
h1 This is my base template
if(authenticated)
// Child templates overwrite this block with their content
block content
else
// Otherwise, prompt user to log in
a(href='/login') login
这是class sortType
template<class T>
class collection
{
public:
std::vector<T> vec;
void sort(sortType& U, bool compare(T, T))
{
U.doSort(vec, compare) ;
}
}
以下代码是我想要使用的一些不同的排序方法
template<class T>
class sortType
{
protected:
doSort(std::vector<T>&, bool compare(T, T));
}
compare是一个函数看起来像这样:
template<class T>
class insertionsort : public sortType
{
public:
doSort(std::vector<T>&, bool compare(T, T))
{
//code of insertion sort
}
}
template<class T>
class quicksort : public sortType
{
public:
doSort(std::vector<T>&, bool compare(T, T))
{
//code of quicksort
}
}
我想像以前一样使用上一课:
template <class T>
bool greater( T l, T r)
{
if (l<r) return true;
return false;
}
不幸的是,visual studio宣布我无法将insertionsort类传递给sortType类。我怎么能修复它并使用之前的那些东西。 感谢帮助
答案 0 :(得分:0)
这里:
void sort(sortType& U, bool compare(T, T))
您正在尝试传递sortType
,但它是一个模板;实际类型为sortType<T>
,因此函数签名应为
void sort(sortType<T>& U, bool compare(T, T))
还有,评论中提到的 n.m。