我在代码中大量使用std :: shared_ptr。我有一些函数需要使用“this”从MyClass中调用,所以将这些函数声明为(例如)
int AnotherClass::foo(const MyClass *obj)
{
}
我希望const明确表示obj不会因为我传递一个原始指针而改变。 但是在foo里面我有
int AnotherClass::foo(const MyClass *obj)
{
int number = obj->num_points()-1;
}
我的编译器抱怨“该对象具有与成员函数不兼容的类型限定符”。 num_points是在标题中声明和定义的简单get函数:
class MyClass {
public:
...
int num_points(){return _points.size();}
...
private:
std::vector<MyPoint> _points;
};
最好的方法是什么?显然我可以摆脱foo中的const要求,但我喜欢它强加的刚性。 非常感谢提前!
答案 0 :(得分:10)
使该成员函数const
:
int num_points() const // <---
{
return _points.size();
}
这样你可以在const
个对象上调用它。进入habbit就可以获得不会改变对象状态的所有功能。
答案 1 :(得分:6)
也将num_points
声明为const:
int num_points() const
{
return _points.size();
}