在自定义函数的排序列表中使用未声明的标识符

时间:2013-08-17 09:07:29

标签: c++ list sorting

我正在尝试使用我编写的自定义函数对自定义结构类型的列表进行排序,但是给我一个错误:

  

使用未声明的标识符

struct myStruct
{
    int x1;
    int x2;
};

bool CompareData(const myStruct& a, const myStruct& b)
{
    if (a.x1 < b.x1) return true;
    if (b.x1 < a.x1) return false;

    // a=b for primary condition, go to secondary
    if (a.x2 < b.x2) return true;
    if (b.x2 < a.x2) return false;

    return false;
}

void sortingList ()
{
    std::list<myStruct> custom_dist;
    //...Fill list
    custom_dist.sort(CompareData); //Here i receive the error
}

这是错误:

enter image description here

beacuse似乎需要输入参数...

1 个答案:

答案 0 :(得分:0)

这段代码对我来说很好。你从std中列出了这个列表吗?这就是我构建它的方式:g ++ -Wall main.cpp

#include <list>

struct myStruct
{
int x1;
int x2;
};

bool CompareData(const myStruct& a, const myStruct& b)
{
if (a.x1 < b.x1) return true;
if (b.x1 < a.x1) return false;

// a=b for primary condition, go to secondary
if (a.x2 < b.x2) return true;
if (b.x2 < a.x2) return false;

return false;
}

int main()
{
    std::list<myStruct> custom_dist;
    custom_dist.sort(CompareData);
    return 0;
}