0

私はvtkを使ったプロジェクトを持っています。このプロジェクトでは、多くのvtkオブジェクトがプライベートメンバーとして構築されています。.hファイルで、次のようにvtkオブジェクトを初期化します。

vtkSmoothPolyDataFilter *m_SmoothFilter;
vtkDecimatePro *m_DecimatePro;
vtkCleanPolyData *m_CleanPolyData;

実行時に、これらのオブジェクトの一部はNew()コマンドで初期化されますが、そうでないものもあります。スマートポインターを使用できないため(UIパッケージが使用できないため)、デストラクタでこれらのオブジェクトを削除する必要があります。それらが初期化されているかどうかを理解するには、ブールチェックシステムを使用する必要があります。

if(m_SmoothFilter)
   m_SmoothFilter->Delete()
if(m_DecimatePro)
   m_DecimatePro->Delete()

ただし、このコードの抜粋では、オブジェクトが初期化されているかどうかは検出されません。どうすればこのチェックを行うことができますか?

4

1 に答える 1

2

すべてのポインタをゼロまたはnewで作成された実際のオブジェクトに初期化します。次に、C ++の削除はifなしで削除できます(ゼロポインターを削除してもかまいません)。上記のDelete()が何をするのかわかりません。

于 2012-05-03T12:40:43.477 に答える