0

クラスコンストラクターには、次のような宣言があります...

Class A:
{
  public:
 A(int a, SharedPtr<class T>sp = SharedPtr<class T>());
 ~A();
}

今、別のクラスから、このクラスを次のような共有ポインターとして破棄しています

delete (SharedPtr<A>*)(*iter);

その結果、クラッシュしますchecked_delete<class T>

SharedPtr<class T>spこれはここでは不完全なのか、それともクラッシュの原因は何なのか、誰かが言うことができますか?

4

1 に答える 1

0
delete (SharedPtr<A>*)(*iter);

これはどういう意味ですか?

1) なぜ にキャストするのSharedPtr<A>ですか? キャストは安全ですか?は何型iterですか?何を*iter返しますか?

2) いったいなぜ共有 ptr を削除しているのですか? ヒープに共有ptrを作成しましたか?! これは、共有ptrの目的全体を無効にします。スタック上に作成し、必要に応じてコピーします。ヒープ上には作成しません。

于 2012-11-12T00:15:24.083 に答える