私はクラスA
を持ち、他のクラスのオブジェクトへのポインタのstd::vector
のB
です。私のクラスは特定のインデックスにあるオブジェクトへのポインタをconst
返します。さて、オブジェクトを修正したいのであれば、それを行う最善の方法は何ですか?クラスC++内のメンバオブジェクトを変更する
A
クラスのget/setメソッドを書くことができます。これは最終的にクラスB
のget/setメソッドを使用しますが、コードの複製です。 friend
キーワードを使用してプライベートメンバーを変更することをお勧めしますか?
それとも、私はそれは、コードの重複を避けるためにB
のプライベートメンバーを変更することができ、クラスA
がクラスB
のfriend
も作ることができます。
または、返されたポインタのconst
を削除できます。
class B;
class A {
std::vector<B*> m_list;
public:
const B* getB(int index) {
return m_list[index];
}
};
class B {
private:
int a;
float b;
long c;
long getC() {
return C;
}
int getA() {
return a;
}
float getB() {
return b;
}
/*
set_methods
*/
};
あなたが求めていることは完全にはっきりしません。あなたの質問を示すためにコード[mcve]を生成できますか? – George
"friendキーワードを使用してプライベートメンバーを変更することをお勧めしますか?" - No. – KonstantinL
"返されたポインタのconstを取り除くことができます" - これは "friend"より悪いです。 – KonstantinL