Les types

Résolu
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 - 28 déc. 2005 à 13:14
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 - 28 déc. 2005 à 17:46
Bonjour à tous,

J'ai un objet TextBox par exemple et je voudrais savoir si il hérite de la classe Object ? (c'est un cas d'école), comment faire cela ? Ce qu'il faudrait c'est qq chose du genre :

if (monobjet->get_Type()->CompareTo("Object") == 0)
// alors mon objet derive bien de la classe Object

Par avance, merci.

8 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
28 déc. 2005 à 17:14
C'est bien ce que je pensais, tu fais un dynamic_cast
C'est pas très joli tu sais :)

Voila comment tu peux faire:

TextBox* textBox = 0;
if(textBox = dynamic_cast<TextBox*>(c))
{
textBox->Cut();
}
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
28 déc. 2005 à 17:38
C'est une affectation, pas une comparaison. C'est vrai que c'est uns syntaxe assez particulière, j'imagine que si le dynamic_cast échoue il retourne NULL
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
28 déc. 2005 à 16:17
C'est le genre de choses que tu sais à la compilation en général, donc je vois pas trop a quoi ca pourrait servir.
Tu peux quand même regarder du coté de la RTTI
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
28 déc. 2005 à 16:36
Ben en faite c'est parceque je veux faire un menu "copier, couper,coller" et que j'ai besoin de savoir si le control actif à été hérité de "TextBox" pour pouvoir utiliser sa propriété "cut" ou "past" par exemple, c'est quoi le RTTI ? mon code est en c++ managé
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
28 déc. 2005 à 16:39
Le RTTY c'est pour avoir des informations sur les types à l'exécution, je sais pas comment ca se passe en managé.
Je comprend pas ce que tu veux faire de toutes facons
if (monobjet->get_Type()->CompareTo("Object") == 0)
// Tu mets quoi ici?
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
28 déc. 2005 à 17:02
Ben dans mon application j'ai un menu avec "couper, copier, coller", quand il clique sur "couper" faut que je fasse un couper sur le composant qui est activé sur ma form. Il faudrait donc que je sache si ce composant est de type "TextBox", afin de caster mon composant, exemple ( quand l'utilisateur clique sur couper)

Control * c = this->ActiveControl ;

if(c->GetType()->ToString()->CompareTo("Derive_Textbox_Virgule.Derive_Textbox_VirguleControl") == 0)
dynamic_cast<TextBox*>(c)->Cut() ;
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
28 déc. 2005 à 17:35
Merci bcp, ca marche mais par contre j'ai pas vraiment compris pourquoi, pourquoi utilises tu "=" plutot que "==" ? et comment ca se fait que ca marche ?
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
28 déc. 2005 à 17:46
ok, merci c'est très ingenieux en tout cas
0
Rejoignez-nous