Comment vérifier le type d'un objet en C ++ / CLI?
Est-il un moyen simple de vérifier le type d'un objet? J'ai besoin de quelque chose le long des lignes suivantes:
MyObject^ mo = gcnew MyObject();
Object^ o = mo;
if( o->GetType() == MyObject )
{
//Do somethine with the object
}
else
{
//Try something else
}
Pour le moment je suis en utilisant des blocs try-catch à la recherche pour System::InvalidCastException
s qui se sent moche, mais fonctionne. Je vais essayer de profil et de quelque chose comme le code ci-dessus pour voir si c'est plus vite/lent/lisible, mais ne peut pas travailler sur la syntaxe de même essayer.
Au cas où quelqu'un se demande, c'est d'avoir une seule file d'attente pour entrer dans un thread qui ont fourni des données pour travailler sur. Parfois je veux modifier les paramètres et de les transmettre par le biais de la file d'attente de données est un moyen simple de le faire.
source d'informationauteur Jon Cage
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
MyObject::typeid
en C++/CLI de la même façon quetypeof(MyObject)
est utilisé en C#. Le Code ci-dessous copié sans vergogne de votre question et modifiée ...Vous devriez vérifier Comment: la mise en Œuvre, et que C# mots-clés en C++:
edit: je vais quitter ce ici. Mais cette réponse est pour le C++. Probablement pas même un peu lié à ce faire pour les CLI.
Vous avez besoin de compiler avec RTTI(Run Time Type Information). Ensuite, regardez l'article de wikipédia http://en.wikipedia.org/wiki/Run-time_type_information et de recherche de google pour RTTI. Doit travailler pour vous.
D'autre part, vous pouvez avoir une classe de base virtuelle pour tous vos classes de données avec un membre de la variable qui décrit quel type il est.