Wie um zu überprüfen, Typ eines Objekts in C++/CLI?
Gibt es eine einfache Möglichkeit zu prüfen, den Typ eines Objekts? Ich brauche etwas entlang der folgenden Zeilen:
MyObject^ mo = gcnew MyObject();
Object^ o = mo;
if( o->GetType() == MyObject )
{
//Do somethine with the object
}
else
{
//Try something else
}
Im moment bin ich mit verschachtelten try-catch-Blöcken suchen System::InvalidCastException
s fühlt sich hässlich, aber Sie funktioniert. Ich werde versuchen und das Profil so etwas wie der code oben, um zu sehen, ob es schneller/langsamer/lesbar, aber nicht arbeiten können, die syntax überhaupt zu versuchen.
Falls sich jemand wundert, dies kommt von einer einzigen Warteschlange betreten einen thread, die gelieferten Daten zu arbeiten. Gelegentlich will ich Einstellungen ändern und leitet Sie über die Daten-queue ist eine einfache Möglichkeit, dies zu tun.
InformationsquelleAutor Jon Cage | 2010-03-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
MyObject::typeid
in C++/CLI die gleiche Weise wietypeof(MyObject)
verwendet wird, in C#. Code unten schamlos kopiert von deiner Frage und geändert ...macht diese arbeiten noch in VS 2010/2012? Nicht zu sehen, dass typeid-Mitglied...
Es arbeitet immer noch in VS2010. Ich habe nicht VS2012, so kann nicht kommentieren, die aktuelle VS-version. Es kann sein, dass du nicht "zu sehen, dass typeid-Mitglied", weil AutoVervollständigen für C++/CLI nicht enthalten war in VS2010.
Ich konnte sogar in VS2013.
InformationsquelleAutor mcdave
Sollten Sie sich Gewusst wie: Implementieren ist und als C# - Schlüsselwörter in C++:
InformationsquelleAutor Andrew Hare
edit: ich aus diesem hier. Aber diese Antwort ist für C++. Wahrscheinlich nicht einmal etwas im Zusammenhang zu tun, dies für die CLI.
Müssen Sie zum kompilieren mit RTTI(Run Time Type Information) auf. Dann schau dir den wikipedia-Artikel http://en.wikipedia.org/wiki/Run-time_type_information und google-Suche für RTTI. Sollte für Sie arbeiten.
Auf der anderen Seite möchten Sie vielleicht, um eine virtuelle Basisklasse für alle Ihre Daten-Klassen mit einer member-variable, die beschreibt, um welche Art es ist.
InformationsquelleAutor mfperzel