c – 创建集时出错

c – 创建集时出错,第1张

概述我想知道为什么我无法创建一个集合. 我收到以下错误 这是我的代码. Point.cpp我的Point类 bool Point::operator<(const Point& p2)const {return p21.length < p2.getScalarValue();}bool Point::operator>(const Point p2) {bool result;resul 我想知道为什么我无法创建一个集合.
我收到以下错误

这是我的代码.

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 methodbool 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派生类型,则这很重要.

总结

以上是内存溢出为你收集整理的c – 创建集时出错全部内容,希望文章能够帮你解决c – 创建集时出错所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1219782.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存