我在我的代码中大量使用 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 是一个在 header 中声明和定义的简单 get 函数:
class MyClass {
public:
...
int num_points(){return _points.size();}
...
private:
std::vector<MyPoint> _points;
};
解决这个问题的最佳方法是什么?显然我可以摆脱 foo 中的 const 要求,但我喜欢它强加的刚性。 非常感谢!
最佳答案
使该成员函数const
:
int num_points() const // <---
{
return _points.size();
}
这样你就可以在 const
对象上调用它。养成像这样限定每个不改变对象状态的函数的习惯。
关于c++ - 在函数中使用指向类的 const 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17719254/