4
次の例では、私が取得:C++/CLIファイナライザと演算子
error C2300: 'UnmanagedClass' : class does not have a finalizer called '!SmartPointer'
私はoperator-を削除する場合>、このエラーが表示されなくなります。誰かがなぜこれが起こっているのか説明できますか?
// Unmanaged class.
class UnmanagedClass { };
public ref class SmartPointer {
public:
SmartPointer(UnmanagedClass* u) : m_ptr(u) { }
~SmartPointer() { this->!SmartPointer(); }
!SmartPointer() { delete m_ptr; }
// This line triggers C2300.
UnmanagedClass* operator->() { return m_ptr; }
};
int main() {
SmartPointer^ s = gcnew SmartPointer(new UnmanagedClass);
}
Reed、tあなたをハンクします。私がそれを認識していないとは信じられない。残念ながら、私は演算子*もオーバーロードされています。ちょうどやっている 〜SmartPointer(){!SmartPointer(); } も動作しません。 – Ryan
入手した: 〜SmartPointer(){SmartPointer ::!SmartPointer(); } もう一度ありがとうございます。ライアン – Ryan