In einem C++/CLI-Projekt habe ich eine Methode in einer nativen C++ - Klasse, wo ich eine gcroot
Referenz für NULL
oder nullptr
überprüfen möchte. Wie mache ich das? Keiner der folgenden scheint zu funktionieren:Wie gcroot Referenz für NULL oder nullptr zu testen?
void Foo::doIt(gcroot<System::String^> aString)
{
// This seems straightforward, but does not work
if (aString == nullptr)
{
// compiler error C2088: '==': illegal for struct
}
// Worth a try, but does not work either
if (aString == NULL)
{
// compiler error C2678: binary '==' : no operator found
// which takes a left-hand operand of type 'gcroot<T>'
// (or there is no acceptable conversion)
}
// Desperate, but same result as above
if (aString == gcroot<System::String^>(nullptr))
{
// compiler error C2678: binary '==' : no operator found
// which takes a left-hand operand of type 'gcroot<T>'
// (or there is no acceptable conversion)
}
}
EDIT
Die oben ist nur ein vereinfachtes Beispiel. Ich arbeite tatsächlich an einer Wrapper-Bibliothek, die zwischen verwaltetem und nativem Code "übersetzt". Die Klasse, an der ich arbeite, ist eine native C++ - Klasse, die ein verwaltetes Objekt umschließt. Im Konstruktor der nativen C++ - Klasse bekomme ich eine gcroot
Referenz, die ich auf Null überprüfen möchte.