小编Dav*_*d D的帖子

为什么std :: sort不接受比较函数中声明的类

我正在工作,将比较器写成一个函数(稍后移动,当我决定哪里最好的时候),并注意到这个特点.我想了一会儿,并意识到我不明白为什么代码不能编译,如果我使用内部比较器,但外部的一个很好.

有什么解释吗?

快速测试工具:

#include <iostream>
#include <vector>
#include <algorithm>

class CompareMe
{
 public:
    CompareMe(int in) : toCompare(in){}
    int toCompare;
};

class Comparators
{
public:
    bool operator()(CompareMe * first, CompareMe * second)
    {
        return first->toCompare < second->toCompare;
    }
};

class ComparatorsOuter : public Comparators{};

int main()
{
    class ComparatorsInner : public Comparators{};

    std::vector<CompareMe *> compares;
    compares.push_back(new CompareMe(0));
    compares.push_back(new CompareMe(1234));
    compares.push_back(new CompareMe(163));
    compares.push_back(new CompareMe(6));
    compares.push_back(new CompareMe(12));

    //This works, and properly sorts the array
    ComparatorsOuter comparator;
    std::sort(compares.begin(), compares.end(), comparator);

    //Uncomment out the sort …
Run Code Online (Sandbox Code Playgroud)

c++

5
推荐指数
1
解决办法
880
查看次数

标签 统计

c++ ×1