你会如何专门化 std::greater

ami*_*421 1 c++ stl

有一个

std::list<MyBaseClass*> objects;
Run Code Online (Sandbox Code Playgroud)

您如何(意思是语法)将 std::greater 专门用于 std::list 的排序方法

template<> class std::greater<MyBaseClass*> {
public:
     bool operator()(const MyBaseClass*& lhs, const MyBaseClass*& rhs) const
     {
         return lhs->get_index() > rhs->get_index();
     }
Run Code Online (Sandbox Code Playgroud)

产生错误:

C2662:“int MyBaseClass::get_index(void)”:无法将“this”指针从“const MyBaseClass”转换为“MyBaseClass &”转换丢失限定符

你能解释一下这个问题吗?

小智 5

您的实现eidos::MyBaseClass::get_index()需要标记为“const”。