通过这些对象的属性值对指向obcjects的指针进行排序

时间:2017-04-18 23:17:48

标签: c++ sorting pointers object vector

在班级经理中,我有以下方法:

void Manager::SortElementsById()
{
    sort(world->GetElements().begin(), world->GetElements().end(), compareById);
}

bool compareById(const Element* element1, const Element* element2)
{
    return element1->Id < element2->Id;
}

世界是指向世界类对象的指针。班级世界包含:

vector<Element*> elements; 
vector<Element*> World::GetElementss()
{
    return this->elements;
}

类元素包含:

int Id;

我有两个问题:

  1. 为什么它不起作用?我有以下错误:&#34;错误C2065&#39; compareById&#39;:未声明的标识符&#34;

  2. 最终我想让Id(在类Element中)私有并通过公共方法GetId()返回这些字段的值。当我想在const对象上执行这个方法时,这是一种生命,所以我不知道如何在这些条件下对这些向量进行排序。

1 个答案:

答案 0 :(得分:1)

  

我有以下错误:&#34;错误C2065&#39; compareById&#39;:未声明的标识符&#34;

像往常一样,compareById必须在使用之前声明。 (除非它与同一类函数属于同一类,但它似乎根本不是一个类成员。)

  

当我想在const对象

上执行此方法时,这是一种生命

听起来你只需要让你的函数成为const成员函数。声明它就像

int GetId() const;

您将被允许在const个对象上调用它。