これが私の問題です。
オブジェクトの配列を (std::vector で) 保持するクラスがあります。これらのオブジェクトはクライアント コードから変更できるため、変更する必要があるオブジェクトへのポインターを返すプライベート ゲッターを作成しました。public メソッドは、この getter を使用して配列内のオブジェクトを変更します。
プライベート ゲッターは、配列内のオブジェクトの特定の値をクライアント コードに返す他のメンバー関数でも使用されます。これらの関数をconstにして返してほしいのですが、前述の非constゲッターを使っているのでできません。
もう 1 つの const ゲッターを作成できることはわかっていますが、それではコードが重複するだけです。
どうすればこれを正しく実装できますか?
コード例:
class Object;
class Inventory
{
Object* GetObject(int id);
void AddObjectProp(int id, int amount) {
Object* x = GetObject id);
x->prop += amount;
}
//using const here is not posible because GetObject is not const
int GetObjectProp(int id) {
Object* x = GetObject id);
return x->prop;
}
}
ありがとうございました。