【发布时间】:2021-12-26 22:39:59
【问题描述】:
Point Point::add(Point& a,Point& b) {
Point result {};
size_t length {std::max(a._vector.size(),b._vector.size())};
for(size_t i {1};i<=length;++i) {
result._vector.push_back(a.get(i)+b.get(i));
}
return std::move(result);
}
上面的代码工作正常,但是将签名更改为
Point Point::add(const Point& a,const Point& b)
给我(编译错误):
E1086 the object has type qualifiers that are not compatible with the member function "Point::get"
object type is: const Point
注意:float Point::get(const size_t& component) 不会修改任何内容。
请帮帮我。
谢谢。
【问题讨论】:
-
你没有在你的问题中显示的是
float Point::get(const size_t& component)是否实际上是float Point::get(const size_t& component) const,如果它没有改变任何东西,它应该是,所以它可以在一个const对象上使用。 -
@Supreeto "上面的代码" 不能正常工作。:)
-
正如@stefaanv 所说,您需要在
Point::get()方法声明的末尾添加const。 -
问题不在于方法是否修改了任何东西,而在于是否声明了
const -
const正确性是从一开始就很容易做到的事情之一,但如果拖欠清理起来可能会很麻烦。
标签: c++ class constants overloading function-declaration