2016-06-10 10 views
0

Ich möchte überprüfen, ob meine C++/Cli verwaltet auto_gcroot ist null oder nicht. Hier ist, wie ich vorgegangen:So überprüfen Sie auto_gcroot Objekt für nullptr

auto_gcroot<RefClassA^> m_a; 

if (static_cast<RefClassA^>(m_a) != nullptr) 
    { 
     ..... 
    } 

Das Problem ist, dass ich einen Fehler:

‚Keine geeignete Konvertierung von 'auto_gcroot zum Objekt ^' existiert

+0

Ich kann dies nicht auf VS2012 reproduzieren. Wenn ich "String" für "RefClassA" ersetze, kompiliert es sich gut. Haben Sie andere Fehler, die die Ursache sein könnten? –

+0

Es ist ein intelligenter Zeigertyp, nur wenn 'if (m_a) {} 'die Aufgabe erledigt. Aber das stört den IntelliSense-Parser, 'wenn (!! m_a) {}' ist vielleicht ein bisschen zu grody. 'if (m_a.get()) {}' ist in Ordnung. –

Antwort

3

Wie ich in dem genannten Kommentare, ich bin nicht in der Lage, dies auf VS2012 zu reproduzieren.

Allerdings hat auto_gcroot eine get Methode, die das Objekt als einfache Referenz zurückgibt. Sie sollten das mit nullptr vergleichen können.

msclr::auto_gcroot<String^> m_a; 

if (m_a.get() != nullptr) 
{ 
    // ... 
} 
Verwandte Themen