ベクトルが所有するいくつかのオブジェクトへのポインタを保持するようにします。
ベクトルは次のとおりです。
private:
std::vector<fppVirtual*> m_fapps;
次のような要素を作成しました。
m_fapps.push_back(new fpp1(renderingEngine)); //fpp* are subclasses of fppVirtual
m_fapps.push_back(new fpp2(renderingEngine));
m_fapps.push_back(new fpp3(renderingEngine));
別のクラスのベクトル インスタンス変数と同様m_fapps
に、クラスのデストラクタが適切にクリーンアップされるようにしたいと思いますm_fapps
。
for (int i=0, size=m_fapps.size();i<size;++i){
delete m_fapps[i];
}
このメモリ管理手法は受け入れられますか? 所有するクラスが破棄されたときにベクトルがスコープ外になると、これらのnew
オブジェクトへのポインターのみが削除されるため、このループが必要だと思いますよね?