begin process at 2012 05 29 17:56:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Pb de cast ou instanceOf ???


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pb de cast ou instanceOf ???

lundi 23 décembre 2002 à 01:34:18 | Pb de cast ou instanceOf ???

brunkass

Voila mon pb :
g une classe A dont heritent plusieurs autres classes B1,B2,B3...

g créé un vecteur de pointeur vers des objets de type A, seulement derriere c'est soit B1 soit B2 soit B3...

bon en fait je voudrais connaitre le mot clef pour savoir de quel classe est un objet ???
je connaissais instanceOf ms lui il me donne tjs la classe mere (A).....

pls
Merci.

lundi 23 décembre 2002 à 09:14:25 | Re : Pb de cast ou instanceOf ???

vieuxLion

bonjour,
Si le polymorphisme ne te suffit pas,
c'est un bon endroit pour utiliser le RTTI

Voici un exemple :
#include <typeinfo>
#include <iostream>
using namespace std;
//les classes doivent posséder au moins une méthode virtuelle
class A
{public: A(){}; virtual ~A(){}; };
class B1 : public A
{public: B1(){}; virtual ~B1(){};};
class B2 : public A
{public: B2(){}; virtual ~B2(){};};

void main(int argc, char ** argv)
{
cout << "A* pAsurA = new A();" << endl;
A* pAsurA = new A();
cout << "A* pAsurB1 = new B1();" << endl;
A* pAsurB1 = new B1();
cout << "A* pAsurB2 = new B2();" << endl;
A* pAsurB2 = new B2();
//Attention, en VC++6 : ne donne pas les bons résultats si on ne déréférence pas les pointeurs!
cout << "typeid(pAsurA).name()=" << typeid(pAsurA).name() << endl;
cout << "typeid(pAsurB1).name()=" << typeid(pAsurB1).name() << endl;
cout << "typeid(pAsurB2).name()=" << typeid(pAsurB2).name() << endl;
//OK
cout << "typeid(*pAsurA).name()=" << typeid(*pAsurA).name() << endl;
cout << "typeid(*pAsurB1).name()=" << typeid(*pAsurB1).name() << endl;
cout << "typeid(*pAsurB2).name()=" << typeid(*pAsurB2).name() << endl;

l'operateur instanceof ... c'est en Java
A+

-------------------------------
Réponse au message :
-------------------------------

> Voila mon pb :
> g une classe A dont heritent plusieurs autres classes B1,B2,B3...
>
> g créé un vecteur de pointeur vers des objets de type A, seulement derriere c'est soit B1 soit B2 soit B3...
>
> bon en fait je voudrais connaitre le mot clef pour savoir de quel classe est un objet ???
> je connaissais instanceOf ms lui il me donne tjs la classe mere (A).....
>
> pls
> Merci.
>
>
lundi 23 décembre 2002 à 14:12:53 | Re : Pb de cast ou instanceOf ???

brunkass

merci pour ta reponse.. le pb c que g essaye alors :

- sans dereferencer, en effet ca rend toujours la classe A
- le pb c'est que quand je dereference, il me génère un warning a la compil et une erreur a l'execution !!!!

.... donc je sais pa d'ou ca viens.....
Si kelkun a la réponse a ce ****** de pb....
Merci
Brunkass



-------------------------------
Réponse au message :
-------------------------------

> bonjour,
> Si le polymorphisme ne te suffit pas,
> c'est un bon endroit pour utiliser le RTTI
>
> Voici un exemple :
> #include <typeinfo>
> #include <iostream>
> using namespace std;
> //les classes doivent posséder au moins une méthode virtuelle
> class A
> {public: A(){}; virtual ~A(){}; };
> class B1 : public A
> {public: B1(){}; virtual ~B1(){};};
> class B2 : public A
> {public: B2(){}; virtual ~B2(){};};
>
> void main(int argc, char ** argv)
> {
> cout << "A* pAsurA = new A();" << endl;
> A* pAsurA = new A();
> cout << "A* pAsurB1 = new B1();" << endl;
> A* pAsurB1 = new B1();
> cout << "A* pAsurB2 = new B2();" << endl;
> A* pAsurB2 = new B2();
> //Attention, en VC++6 : ne donne pas les bons résultats si on ne déréférence pas les pointeurs!
> cout << "typeid(pAsurA).name()=" << typeid(pAsurA).name() << endl;
> cout << "typeid(pAsurB1).name()=" << typeid(pAsurB1).name() << endl;
> cout << "typeid(pAsurB2).name()=" << typeid(pAsurB2).name() << endl;
> //OK
> cout << "typeid(*pAsurA).name()=" << typeid(*pAsurA).name() << endl;
> cout << "typeid(*pAsurB1).name()=" << typeid(*pAsurB1).name() << endl;
> cout << "typeid(*pAsurB2).name()=" << typeid(*pAsurB2).name() << endl;
>
> l'operateur instanceof ... c'est en Java
> A+
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Voila mon pb :
> > g une classe A dont heritent plusieurs autres classes B1,B2,B3...
> >
> > g créé un vecteur de pointeur vers des objets de type A, seulement derriere c'est soit B1 soit B2 soit B3...
> >
> > bon en fait je voudrais connaitre le mot clef pour savoir de quel classe est un objet ???
> > je connaissais instanceOf ms lui il me donne tjs la classe mere (A).....
> >
> > pls
> > Merci.
> >
> >
>
jeudi 26 décembre 2002 à 17:32:18 | Re : Pb de cast ou instanceOf ???

Toumhor

pourquoi ne pas ajouter une methode virtuelle a la classe A qui renvoit un type en fonction de l'objet et de deriver cette methode dans les classes derivees:

par ex:
enum kind_of_class
{
kind_none,
kind_b1,
kind_b2
}

dans la classe A:
kind_of_class GetKind() {return kind_none;}

dans la classe B1:
kind_of_class GetKind() {return kind_b1;}

dans la classe B2:
kind_of_class GetKind() {return kind_b2;}


vendredi 27 décembre 2002 à 21:43:56 | Re : Pb de cast ou instanceOf ???

brunkass





-------------------------------
Réponse au message :
-------------------------------

> pourquoi ne pas ajouter une methode virtuelle a la classe A qui renvoit un type en fonction de l'objet et de deriver cette methode dans les classes derivees:
>
> par ex:
> enum kind_of_class
> {
> kind_none,
> kind_b1,
> kind_b2
> }
>
> dans la classe A:
> kind_of_class GetKind() {return kind_none;}
>
> dans la classe B1:
> kind_of_class GetKind() {return kind_b1;}
>
> dans la classe B2:
> kind_of_class GetKind() {return kind_b2;}
>
>
>
vendredi 27 décembre 2002 à 21:45:40 | Re : Pb de cast ou instanceOf ???

brunkass




Yep merci... c exactement ce que j'ai fait en fait !
Ms c qd meme bizarre que ce soit possible + directement...
Bye
-------------------------------
vendredi 27 décembre 2002 à 21:45:57 | Re : Pb de cast ou instanceOf ???

brunkass




Yep merci... c exactement ce que j'ai fait en fait !
Ms c qd meme bizarre que ce soit pas possible + directement...
Bye
-------------------------------
lundi 30 décembre 2002 à 16:25:06 | Re : Pb de cast ou instanceOf ???

vieuxLion


...de retour de vacances
as tu bien positionné le switch /GR du compilateur ?
ou alors sous l'environnement VC++6
Project/Settings/C++/C++Langage/cocher la case EnableRTTI

A plus

-------------------------------
Réponse au message :
-------------------------------

> merci pour ta reponse.. le pb c que g essaye alors :
>
> - sans dereferencer, en effet ca rend toujours la classe A
> - le pb c'est que quand je dereference, il me génère un warning a la compil et une erreur a l'execution !!!!
>
> .... donc je sais pa d'ou ca viens.....
> Si kelkun a la réponse a ce ****** de pb....
> Merci
> Brunkass
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > bonjour,
> > Si le polymorphisme ne te suffit pas,
> > c'est un bon endroit pour utiliser le RTTI
> >
> > Voici un exemple :
> > #include <typeinfo>
> > #include <iostream>
> > using namespace std;
> > //les classes doivent posséder au moins une méthode virtuelle
> > class A
> > {public: A(){}; virtual ~A(){}; };
> > class B1 : public A
> > {public: B1(){}; virtual ~B1(){};};
> > class B2 : public A
> > {public: B2(){}; virtual ~B2(){};};
> >
> > void main(int argc, char ** argv)
> > {
> > cout << "A* pAsurA = new A();" << endl;
> > A* pAsurA = new A();
> > cout << "A* pAsurB1 = new B1();" << endl;
> > A* pAsurB1 = new B1();
> > cout << "A* pAsurB2 = new B2();" << endl;
> > A* pAsurB2 = new B2();
> > //Attention, en VC++6 : ne donne pas les bons résultats si on ne déréférence pas les pointeurs!
> > cout << "typeid(pAsurA).name()=" << typeid(pAsurA).name() << endl;
> > cout << "typeid(pAsurB1).name()=" << typeid(pAsurB1).name() << endl;
> > cout << "typeid(pAsurB2).name()=" << typeid(pAsurB2).name() << endl;
> > //OK
> > cout << "typeid(*pAsurA).name()=" << typeid(*pAsurA).name() << endl;
> > cout << "typeid(*pAsurB1).name()=" << typeid(*pAsurB1).name() << endl;
> > cout << "typeid(*pAsurB2).name()=" << typeid(*pAsurB2).name() << endl;
> >
> > l'operateur instanceof ... c'est en Java
> > A+
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Voila mon pb :
> > > g une classe A dont heritent plusieurs autres classes B1,B2,B3...
> > >
> > > g créé un vecteur de pointeur vers des objets de type A, seulement derriere c'est soit B1 soit B2 soit B3...
> > >
> > > bon en fait je voudrais connaitre le mot clef pour savoir de quel classe est un objet ???
> > > je connaissais instanceOf ms lui il me donne tjs la classe mere (A).....
> > >
> > > pls
> > > Merci.
> > >
> > >
> >
>


Cette discussion est classée dans : pb, classe, cast, b1, instanceof


Répondre à ce message

Sujets en rapport avec ce message

urgent...pb de cast [ par marcadet ] Bonjour j'ai le pb de cast suivant :>> char date[3]; // date a la date d'aujourd'hui>> int dat;>> dat=(int)date;>> printf("%d", dat) // -> ici Pb avec opérateur '=' sur classe ! [ par nicolas66 ] Bonjour @ tous !g un piti problème avec ma classe de complexes : toute la classe fonctionne ya pas de pb de ce coté là. Par contre, j'ai voulu définir pb classe new et delete [ par mat74 ] salut a ts j'ai encore un pb avec les classescomment je pourrai faire sa :class teste {public: int x; void augmenter() {x++;} void detruire(test pb classes avec tableau [ par JediMaster ] je voudrais crée une classe comme celle ci avec un tableau qui aurit sa taille qui varirais selon l'objet j' ai donc fait un construteurclass classe{ importer une classe dans une dll [ par ilimo ] bonjour : j'ai deux programmes : Pa Pb Pa contient la classe Ca Pb contient la classe Cb Pb est une dll pour Pa comment importer la classe Cb dans la pb d'enregistrement de classe [ par treets ] Bonjour,Je suis en train d'étudier le streaming vidéo et j'ai écrit un prgm pour tester les fonctions de WMencoderSDK.Mon prg compile et linke bien.Pa pb inclusions VS [ par magic_Nono ] Bjje suis sur un gros projet ou on a fait une modification de fondet maintenant le prog compile si il veutie en fonction de l'ordre ou il integre les Problème de cast avec template [ par xkamen ] Bonjour,Je voudrais travailler avec des templates. J'ai créé une classe template Matrix; et je voudrais savoir comment réaliser un cast dans mon progr Petit Pb avec une classe de lecture de fichier [ par EagleEye ] Bonjour les gens :)Et bien voilà mon petit pb :x j'ai une classe qui va lire un fichier xml, du type Xml(string filename) dc ds mon constructeur je fa Pb de Multi héritage [ par bach58 ] Je veux définir une classe Z qui hérite d'une autre classe A par deux voies différentes :class A{ int a; ....}class X:A ..{..}class Y:A... {...}


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales