nui
リストがへのポインターを期待している間に、へのポインターへのポインターをプッシュしていますnui
:
std::list<INuiSensor*> nuiList;
...
nuiList.push_front(nui); // <--- note the lack of &
実際のところ、 nui はそもそもポインターであり、オペレーター&
は指定されたオブジェクトのアドレスを取得するため、次のようになります。
&nui
次のように読みますtake the address of the object named nui
。したがって、オブジェクトがポインターniu
のアドレスへのポインターである場合、ポインターはポインターへのポインターです。
これは尋ねられませんが、言う価値があると思います: オブジェクト ポインターをコンテナーに格納することを避け、オブジェクト インスタンスごとにストア タイプを変更することをお勧めします。
std::list <INuiSensor*> VS std::list <INuiSensor>
ポインターを使用している場合は、オブジェクトの割り当てと割り当て解除を処理する必要があります。リストがグローバルである場合、リストに格納されているポインターによって管理されるすべてのメモリの割り当てを解除するパブリック Close メソッドが必要になります。オブジェクトによって所有されている場合は、同じプロセスをオブジェクト デストラクタに実行する必要があります。
ただし、オブジェクト インスタンスを格納している場合、リスト デストラクタは、有効期間が終了したときに格納されているすべてのオブジェクトの割り当てを解除します。コードはよりクリーンで維持しやすくなります。