0
在课堂管理的属性值设置为obcjects我有以下方法:排序向量通过这些对象
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;
我有2个问题:
为什么它不工作?我有以下错误:“错误C2065'compareById':未声明的标识符”
最终我想通过公共方法GetId()获得这些字段的私有和返回值。当我想在const对象上执行这个方法时,它是illigal,所以我不知道我能做些什么来在这些条件下排序这些向量。
该错误实际上是由错误的顺序造成的。但现在,当我执行SortElementsById()方法时,我有运行时错误:“表达式:矢量迭代器不兼容”。 – Sigger
这是因为'GetElements()'返回一个向量的副本,而不是同一个向量,所以'world-> GetElements()。begin()'和'world-> GetElements()。end()'是两个迭代器不同的载体。 'GetElements()'应该通过引用返回。 – aschepler
我已经解决了我所有的问题,非常感谢。 – Sigger