C++ 如何在C+中使用指针类型比较器声明集合+;?

C++ 如何在C+中使用指针类型比较器声明集合+;?,c++,C++,我有一个结构,用于比较指针: template < class ptype > struct lessThan : public binary_function < ptype *, ptype *, bool > { bool operator() (ptype *lhs, ptype *rhs) { return lhs->key() < rhs->key(); } }; 模板 结构:公共二进制函数 { 布尔运算符()(ptype*lhs

我有一个结构,用于比较指针:

template < class ptype > 
struct lessThan : public binary_function < ptype *, ptype *, bool >
{
    bool operator() (ptype *lhs, ptype *rhs) { return lhs->key() < rhs->key(); }
};
模板
结构:公共二进制函数
{
布尔运算符()(ptype*lhs,ptype*rhs){返回lhs->key()key();}
};
假设我想使用这个比较器创建一组对象指针。声明集合时,正确的语法是什么?我是这样想的:

set <Object *, lessThan> mySet;
设置mySet;
或更像函数指针:

set <Object *, lessThan<Object>()> mySet;
设置mySet;

…但我无法编译它。有什么建议吗?

模板类
std::set
将概念的一种类型
Compare
作为第二个模板参数。因此,在您的情况下,类型将是
小于

这将使正确的声明为:

std::set<Object*, lessThan<Object>> x;
std::set x;


您的第一次尝试不正确,因为
lessThan
不是类型,而是类模板。您的第二次尝试不正确,因为
lessThan()
是一个解析为返回
lessThan

的函数,从技术上讲,
lessThan()
是一个类型。它不是正确的类型。它被解析为一个类型id—“函数()返回
lessThan
”。