4
Dans l'exemple suivant, je reçois:C++/CLI Finaliseurs et opérateurs
error C2300: 'UnmanagedClass' : class does not have a finalizer called '!SmartPointer'
Si je supprime le operator->, cette erreur disparaît. Quelqu'un pourrait-il expliquer pourquoi cela se produit?
// 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);
}
Cela fait sens Reed, t vous hante; Je n'arrive pas à croire que je ne m'en suis pas rendu compte. Malheureusement, j'ai un opérateur * surchargé aussi. Just doing ~ SmartPointer() {! SmartPointer(); } ne fonctionne pas non plus. – Ryan
Vous l'avez: ~ SmartPointer() {SmartPointer ::! SmartPointer(); } Merci encore. Ryan – Ryan