gpt4 book ai didi

c++ - 排序不喜欢我的谓词

转载 作者:行者123 更新时间:2023-11-30 04:03:47 25 4
gpt4 key购买 nike

<分区>

我试图通过传递第一个和最后一个项目并传递一个 bool 谓词来对 vector 进行排序。无法终生弄清楚我做错了什么。怀疑是它对类的理解不够。但这真的让我难住了。

我正在学习加速的 C++ 并在学习第 4 章。花了很多时间阅读,但没有取得任何进展。我在类里面做事可能对我没有帮助,所以我可以并排放置章节。

我得到的错误是

error C2064: term does not evaluate to a function taking 2 arguments

在调用排序的行上。

所以在标题 (Ch4) 中我有以下内容(为了您的理智,我已经编辑了这段代码 - 包含等似乎很高兴 - 标题和代码在单独的文件中并且我使用的是 vs2013 所以它排序了所有这些为我出局)

class Ch4
{
public:
int Ch4::Run();
struct Student_Info;
bool compare(const Student_Info& x, const Student_Info& y);
}

然后在类里面:

struct Ch4::Student_Info
{
string name;
double midterm, final;
vector<double> homework;
};

int Ch4::Run()
{
vector<Student_Info> students;
... code that populates it
sort(students.begin(), students.end(), compare);
}

bool Ch4::compare(const Student_Info& x, const Student_Info& y)
{
return x.name < y.name;
}

当我将该行更改为

sort(students.begin(), students.end(), Ch4::compare);

我得到一个错误,说它缺少一个参数列表 - 但在我的重载列表中它没有显示一个带有参数列表的。

所以我听从了它的建议并将其用作引用,然后返回到原始错误消息。

所以我对两件事感到困惑:1) 为什么我的代码不起作用——如何修复它2) 这些错误消息告诉我什么,为什么它们似乎在谈论不存在或对我隐藏的过载?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com