c++ - 必须调用对非静态成员的引用
问题描述
有没有办法在这样声明的类的范围内声明comp函数。
class Solution {
public:
bool comp(vector<int> x, vector<int> y){
return x[0] < y[0];
}
vector<vector<int>> merge(vector<vector<int>>& intervals) {
sort(intervals.begin(),intervals.end(),comp);
return {{}};
}
};
此代码段给出错误:
必须调用对非静态成员的引用
解决方案
编译器会说非静态成员引用必须相对于特定对象。此提示指出,如果成员未声明为 ,则必须在访问类成员之前创建一个对象static
。
这里有两个选项:
要么将类成员函数声明为
static
,然后直接访问。OTOH,创建类的对象(实例),然后访问类成员函数。
第一个解决方案看起来像:
class Solution {
public:
// Declared as 'static', so you don't need to create any instances
static bool comp(vector<int> x, vector<int> y) {
// ...
}
};
// ...
Solution::comp(...);
第二种解决方案是(也许你不想要这个):
class Solution {
public:
bool comp(...) {
// ...
}
};
// ...
Solution s;
s.comp(...);
推荐阅读
- node.js - Express 启用客户端缓存
- java - 无法在控制台输出中打印 SQL 语句
- go - 如何编写一个 golang 验证函数,以便客户端能够优雅地处理?
- laravel - Laravel Nova 自定义字段,防止按“Enter”键提交表单
- google-cloud-platform - 哪个是首选 - gcloud sdk 或 gcloud api?
- c# - 我可以使用这段旧代码来更改富文本框中一行的文本颜色吗?
- node.js - 如何将 JSON 文件导出到 ExpressJS 中的 URL,然后还能够从该 URL 导入 JSON 文件?
- visual-studio-2017 - 检测到包降级:Microsoft.EntityFrameworkCore.SqlServer 从 2.2.6 到 2.2.4
- c - Packing a Float (IEEE-754) into uint64_t 代码的规范化部分
- python - 有人可以向我解释 map_coordinates 如何在 n 维数据集上工作吗?