c – 创建集时出错
发布时间:2020-12-16 10:23:14 所属栏目:百科 来源:网络整理
导读:我想知道为什么我无法创建一个集合. 我收到以下错误 这是我的代码. Point.cpp我的Point类 bool Point::operator(const Point p2)const {return p21.length p2.getScalarValue();}bool Point::operator(const Point p2) {bool result;result = length p2.getS
我想知道为什么我无法创建一个集合.
我收到以下错误 这是我的代码. Point.cpp我的Point类 bool Point::operator<(const Point& p2)const { return p21.length < p2.getScalarValue(); } bool Point::operator>(const Point p2) { bool result; result = length > p2.getScalarValue(); return result; } 在我的main.cpp中 set<Point> s_p2; Point tempp2; s_p2.insert(tempp2); 按照您的输入后,我编辑了代码,我有以下错误 Point.cpp:56:46:错误:将’const Point’作为’double Point :: getScalarValue()’的’this’参数传递,丢弃限定符[-fpermissive] 这是因为我有两个比较陈述吗? 解决方法
没有
std::set::insert超载将bool作为第二个参数.你可以像这样插入:
s_p2.insert(tempp2); 您的操作符<也可以通过使它成为const方法,采用const引用参数来改进: class Point { // as before bool operator<(const Point& p) const; }; // ^ here,const method bool Point::operator<(const Point& p2) const { return length < p2.length; } 您也可以选择将其设为非成员函数: bool operator<(const Point& lhs,const Point& rhs) { return lhs.getScalarValue() < rhs.getScalarValue(); } 这具有与LHS和RHS完全对称的优点.如果您对Point进行隐式转换或从Point派生类型,则这很重要. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 在activity中获取xml中的基于数组的listView
- ruby – 测试一个数组的元素是否包含在另一个数组
- PostgreSQL笔记(SQL语言注意点)
- flex中httpservice与java后台交互的两种传值方式
- ruby-on-rails – 使用CanCan在Active Admin中拒
- ruby-on-rails – 如何将Capybara功能测试标记为
- stl – 如何在Objective-C std :: map中使用NSSt
- ruby-on-rails – Rails has_many:通过关联.删除
- c – 如果一个函数返回一个int,可以分配一个int吗
- 在Oracle 11g2 XE中编译PL / SQL函数有时会导致O
热点阅读