在班级经理中,我有以下方法:
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;
我有两个问题:
为什么它不起作用?我有以下错误:&#34;错误C2065&#39; compareById&#39;:未声明的标识符&#34;
最终我想让Id(在类Element中)私有并通过公共方法GetId()返回这些字段的值。当我想在const对象上执行这个方法时,这是一种生命,所以我不知道如何在这些条件下对这些向量进行排序。
答案 0 :(得分:1)
我有以下错误:&#34;错误C2065&#39; compareById&#39;:未声明的标识符&#34;
像往常一样,compareById
必须在使用之前声明。 (除非它与同一类函数属于同一类,但它似乎根本不是一个类成员。)
当我想在const对象
上执行此方法时,这是一种生命
听起来你只需要让你的函数成为const成员函数。声明它就像
int GetId() const;
您将被允许在const
个对象上调用它。