コードで std::shared_ptr を自由に使用しています。「this」を使用してMyClassから呼び出したい関数がいくつかあるので、これらの関数を次のように宣言しました(たとえば)
int AnotherClass::foo(const MyClass *obj)
{
}
生のポインターを渡しているので、obj が変更されないことを const で明確にしたいのです。しかし、私が持っている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 要件を取り除くことができますが、それが課す厳格さが気に入っています。よろしくお願いします!