C++ 在函数中使用指向类的常量指针

C++ 在函数中使用指向类的常量指针,c++,constants,shared-ptr,C++,Constants,Shared Ptr,我在代码中大量使用std::shared_ptr。我想使用“this”从MyClass中调用一些函数,因此将这些函数声明为(例如) 我希望const清楚地表明obj不会被更改,因为我正在传递一个原始指针。 然而在我的内心深处 int AnotherClass::foo(const MyClass *obj) { int number = obj->num_points()-1; } 我的编译器抱怨“对象的类型限定符与成员函数不兼容”。num_points是在标头中声明和定义的简单

我在代码中大量使用std::shared_ptr。我想使用“this”从MyClass中调用一些函数,因此将这些函数声明为(例如)

我希望const清楚地表明obj不会被更改,因为我正在传递一个原始指针。 然而在我的内心深处

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;
};
class-MyClass{
公众:
...
int num_points(){return_points.size();}
...
私人:
std::向量_点;
};
最好的解决办法是什么?显然,我可以摆脱foo中的const要求,但我喜欢它强加的刚性。
非常感谢

也将
num_points
声明为常量:

int num_points() const
{
    return _points.size();
}

使该成员函数
常量

int num_points() const // <---
{
    return _points.size();
}
int num_points()常量//
int num_points() const // <---
{
    return _points.size();
}