我收到以下错误
这是我的代码.
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 – 创建集时出错所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)