Pointer NULL setzen
-
Hallo, ich will einen Pointer NULL setzen, dies benötige ich für eine spätere Fehlerbehandlung, aber leider scheint es mir so, dass ich dann Pointer nicht NULL setzen kann, weil mir der Compiler immer die Fehlermeldung
The call does not match any parameter list for "operator="liefert.
Wobei ich folgendes verwende um den Zeiger test auf NULL zu setzen.
TestPtr test; test = NULL;Mein erster Gedanke war, dass man vielleicht stdio.h einbinden muß, damit dies funktioniert, dies brachte aber nicht den gewünschten Erfolg und die Fehlermeldung erscheint weiterhin.
Ich wäre sehr dankbar, wenn mir jemand ein paar Tipps hierzu geben könnte.
Gruß
Andreas
-
Hi,
erste Frage: Wer oder was ist "TestPtr" ?
Wenn es eine eigene Klasse ist, mußt Du ihr mitteilen, was sie mit einem "= 0" anfangen soll.
Die Fehlermeldung weist IMO nicht darauf hin, dass er NULL nicht kennt, sondern eben, dass er keinen passenden operator=() in TestPtr für den Typen von NULL findet....Gruß,
Simon2.
-
Wenn, überhaupt, dann:
TestPtr* test; test = NULL;In deiner Form ist test ein Objekt von Typ TestPtr, kein Zeiger.
-
Was ist denn TestPtr? Kannst du mal die Definition zeigen?
Weiterhin ist NULL ein Makro. Es ist in der Standard-Lib definiert und nicht in der C++ Kernsprache enthalten. Wenn du keine Lib bzw. Header inkludieren willst, schreib einfach 0 hin, z.B. so:
TestPtr test; test = 0;Denn das Makro NULL macht auch nichts anderes.
Lässt sich nur besser per Textsuchfunktion in Sourcecodes finden, als 0. 
-
Hallo, danke für die schnellen Antworten
TestPtr ist definiert durch
namespace Hans { namespace Wurst { class Test { typedef SharedPtr< Hans::Wurst::Test > TestPtr; } } }
-
Andreas79 schrieb:
Hallo, danke für die schnellen Antworten
TestPtr ist definiert durch
namespace Hans { namespace Wurst { class Test { typedef SharedPtr< Hans::Wurst::Test > TestPtr; } } }Aha,
"SharedPtr" ... so wie in "C++-Standard-SharedPtr" ?
Oder wo ist der definiert ?Gruß,
Simon2.
-
"SharedPtr" ... so wie in "C++-Standard-SharedPtr" ?
da bin ich mir jetzt leider nicht ganz sicher, wo kann ich das nachprüfen? Bin leider in C++ noch ein ziemlicher Anfänger;-)
-
Anders gefragt: Woher hast du denn diese Klasse? Im Standard ist sie jedenfalls nicht - der kennt nur std::auto_ptr und unter Umständen std::tr1::shared_ptr.
-
Also SharedPtr kenne ich nicht, außer es ist wiederrum auch ein typedef auf einen bekannten Smartpointer.

Es gibt zwei gängige Shared-Pointer: boost::shared_ptr und std::tr1::shared_ptr.
Diese kann man aber meines Wissens nicht auf 0 setzen, da die Semantik dies nicht zulässt. Es gibt nur eine reset()-Methode.
-
Andreas79 schrieb:
"SharedPtr" ... so wie in "C++-Standard-SharedPtr" ?
da bin ich mir jetzt leider nicht ganz sicher, wo kann ich das nachprüfen? Bin leider in C++ noch ein ziemlicher Anfänger;-)
Hi,
also erstmal kannst Du schauen, welche includes Du hast .... und in einer IDE ("Integrated Development Environment") hast Du oftmals die Möglichkeit, Typen zu "finden"...
Zur Not kannst Du auch eine Textsuche in den Headern machen.Gruß,
Simon2.