【发布时间】:2016-03-14 20:18:44
【问题描述】:
所以假设我有一系列像这样的自定义比较器:
template <typename T>
class less_class {
bool operator() (T obj, T value) const {
return obj < value;
}
};
template <typename T>
class greater_than {
bool operator() (T obj, T value) const {
return obj > value;
}
};
template <typename T>
class equal_to {
bool operator() (T obj, T value) const {
return obj == value;
}
};
我有这样的功能:
template <typename T>
bool compare_values(T obj, T value, T comparator(T obj, T value)) {
if comparator(obj, value) return true;
return false;
}
我应该在 compare_values 函数中使用什么语法,以便它可以接收上述任一比较器并在其实现中使用它?目前,我对函数的比较器参数以与上述类似的方式编写,并且 Xcode 出现错误。我已经尝试稍微弄乱这些论点,看看是否有任何效果,但我认为我需要更好地理解我在这里想要做什么。任何帮助将不胜感激!
【问题讨论】:
-
请注意您的课程已经是标准的:
std::less,std::greater_thanecc。 -
你的比较器应该是结构或类,
public作为修饰符。
标签: c++ comparator functor templating