严重性 代码 说明 项目 文件 行 禁止显示状态 错误(活动) E0140 函数调用中的参数太多 (三) C:\Users\86139\Documents\c++\(三)\源.cpp 75
时间: 2023-06-30 16:18:29 浏览: 154
C++高效获取函数调用堆栈
5星 · 资源好评率100%
如果你的`weapons`是一个`std::vector<weapon*>`类型的数组,那么调用`sort`函数时,第三个参数应该是一个函数对象或函数指针,而不是一个函数。如果你使用的是函数,则会产生编译错误。因此,为了解决这个问题,你需要将比较函数改为一个函数对象或函数指针。
以下是一个将比较函数改为函数对象的示例代码:
```c++
#include <algorithm>
#include <vector>
// 定义weapon结构体
struct weapon {
int id;
// 其他成员变量
};
// 定义比较函数对象
struct cmp {
bool operator()(const weapon* w1, const weapon* w2) const {
return w1->id < w2->id;
}
};
int main() {
// 假设weapons为包含weapon*类型元素的vector数组
std::vector<weapon*> weapons;
// 排序
std::sort(weapons.begin(), weapons.end(), cmp());
return 0;
}
```
在此示例中,我们定义了一个名为`cmp`的函数对象,并在其中重载了`()`运算符,以便它可以像函数一样被调用。然后,我们使用`cmp()`创建了一个`cmp`对象,并将其传递给`sort`函数的第三个参数。这样就可以按照`weapon`结构体中的`id`成员变量对`weapons`数组进行排序了。
阅读全文