Ich bin neu im automatischen Zeiger. Ich habe das:
%Vor% Wie prüfe ich, ob ich myPointer
erfolgreich instanziieren kann? Ich habe if (myPointer==NULL)
ausprobiert und der Compiler hat einen Fehler ausgegeben:
no operator "==" stimmt mit diesen Operanden überein.
Was meinst du mit "instanziieren"?
Bei einer standardkonformen Implementierung war entweder die Konstruktion von (Es ist möglich, dass Sie eine Implementierung ohne Ausnahmeunterstützung verwenden, die Im Allgemeinen können Sie den Wert des Zeigers überprüfen. Sie müssen sich nur die zugrunde liegende Repräsentation ansehen, denn, wie Sie herausgefunden haben, Verwenden Sie dazu Beachten Sie auch, dass MyClass
erfolgreich oder es wurde eine Ausnahme ausgelöst, und der auto_ptr
ist nicht mehr im Gültigkeitsbereich. In dem von Ihnen angegebenen Beispiel kann der Wert des von auto_ptr
dargestellten Zeigers nicht% /% sein. NULL
bei fehlgeschlagenem Zuweisen zurückgeben kann (anstatt eine Ausnahme auszulösen), auch ohne die Verwendung des NULL
- Spezifizierers, aber dies ist nicht der allgemeiner Fall.) (nothrow)
hat kein std::auto_ptr
. operator==
, wie folgt: X* std::auto_ptr<X>::get() const throw()
in C ++ 0x zugunsten von std::auto_ptr
Nach der Anweisung, die Sie in Ihre Frage geschrieben haben, ist entweder myPointer gesetzt oder es wurde eine Ausnahme ausgelöst, und das Abfangen der Ausnahme ist der richtige Weg, um zu überprüfen, ob etwas schief gegangen ist.
In jedem Fall können Sie den zugrunde liegenden Zeiger abrufen, indem Sie auto_ptr::get()
aufrufen.