value class auf null prüfen?
-
Entschuldigung, wenn ich manchen mit so einer einfachen Frage auf die Nerven gehe, aber ich habe schon auf diversen Seiten aus Google nachgeschaut, habe es schon probiert mit "obj == NULL", "obj == 0", (wie es bei Google stand) aber habe leider bisher noch keine Lösung gefunden.
Ich möchte, wenn die gestellten Bedingungen false sind, als Color-Objekt einen NULL-Pointer zurückgeben lassen. Bitte schnell antworten!
-
In C++/CLI nimmt man "nullptr".
-
Jochen Kalmbach schrieb:
In C++/CLI nimmt man "nullptr".
Ja, schon aber eben nur bei verwalteten Klassen, System::Drawing::Color ist ja eine value class und keine ref class, weswegen ich dann immer folgende Fehlermeldung erhalte:
error C2088: '==': Ungültig für class
error C2446: '==': Keine Konvertierung von 'nullptr' in 'System::Drawing::Color'
-
Du kannst eine Farbe nicht mit "null" vergleichen... Du kannst eine "Color" nur mit einer anderen "Color" vergleichen....
Genauso wie Du eine Zahl auch nicht mit "null" vergleichen kannst, sondern auch nur mit einer anderen Zahl!
-
Du könntest ein Nullable<Color> zurückgeben. http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx
-
Jochen Kalmbach schrieb:
Du kannst eine Farbe nicht mit "null" vergleichen... Du kannst eine "Color" nur mit einer anderen "Color" vergleichen....
Genauso wie Du eine Zahl auch nicht mit "null" vergleichen kannst, sondern auch nur mit einer anderen Zahl!Hmm, aber welchen Wert hat dann eine unreferenzierte Color-Instanz? Muss das dann nicht zwangsweise NULL sein?
-
Nein, Wertetypen werden immer default-initialisiert (d.h. alle Member mit 0 initialisiert) - dies gilt selbstverständlich nur für CLI-Datentypen (nicht für native C++ Datentypen).
Edit: Die Color-Struktur wird daher mit (0, 0, 0, 0) initialisiert, d.h. "transparentes schwarz".
-
Taeli schrieb:
Jochen Kalmbach schrieb:
Du kannst eine Farbe nicht mit "null" vergleichen... Du kannst eine "Color" nur mit einer anderen "Color" vergleichen....
Genauso wie Du eine Zahl auch nicht mit "null" vergleichen kannst, sondern auch nur mit einer anderen Zahl!Hmm, aber welchen Wert hat dann eine unreferenzierte Color-Instanz? Muss das dann nicht zwangsweise NULL sein?
Objekte von Strukturen(value class) können nicht unreferenzierte sein, außer man macht sie Nullable.