我在代码中大量使用 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 要求,但我喜欢它强加的刚性。提前谢谢了!