【发布时间】:2011-07-22 00:44:45
【问题描述】:
假设我有一个名为 LinkedList 的模板类,它还包含一个名为 Sort 的方法 我希望能够有一个默认比较器,它假设类型 T 可以与
但是,我希望能够为其他类型覆盖它。
这是我正在扩展的自定义库的一部分。没有 STL。
例如
template <class T, class Comparator<T> >
class LinkedList
{
...
Node* MergeSort(Node* list)
{
...
if (Comparator<T>(nodeA,nodeB))
...
}
...
};
typedef Pair<int, int> ListEntry;
struct sorter
{
inline sorter(){}
inline bool operator()(ListEntry const& a, ListEntry const& b)
{
return a.second < b.second;
}
};
Pair<int, int> entry;
LinkedList<ListEntry, sorter()> list;
list.PushFront( ListEntry(5,9) );
list.PushFront( ListEntry(77,5) );
list.PushFront( ListEntry(4,1) );
list.PushFront( ListEntry(8,44) );
list.PushFront( ListEntry(1,64) );
list.PushFront( ListEntry(3,5) );
n = list.MergeSort(node* n);
这大概就是我的班级的样子。实际上 MergeSort 是一个私有数据成员,但我暂时将其公开,而我只是在闲逛并尝试使其工作。 MergeSort 最终会被 Sort 调用。
我无法编译这个。只是想知道您通常如何像这样传递 Functor 对象。
【问题讨论】:
-
如果您希望我们解决它们,请告诉我们您遇到了哪些编译器错误?