次のデータ型があります。
class A{
public:
A(){
}
~A(){
for(size_t i=0; i<b_elements.size(); i++)
delete b_elements[i];
b_elements.clear();
}
vector<B*> b_elements;
//other operations ...
};
でいくつかの計算を行うために、ビジター デザイン パターンが実装されていますA
。
b_elements
問題は、サブセットのみで作業し、特にそれらの要素にビジターを適用したいときに始まります。
1 つの解決策は、元のオブジェクト内の目的の要素を指し、新しく作成されたオブジェクトでビジターを呼び出す別のオブジェクトを作成するA
ことb_elements
です。しかし、(ご想像のとおり) 問題は、新しいオブジェクトが破棄されるときです。デストラクタは、副作用として元のオブジェクトに影響を与える参照を削除します。
ヒント:b_elements
コストがかかりすぎるため、目的の元のオブジェクトからコピーを作成することはできません。
私の質問は、これは一般的なパターンですか? そのような問題を回避するためのベストプラクティスは何ですか?