profringo666
Messages postés6Date d'inscriptionlundi 30 juin 2003StatutMembreDernière intervention 5 janvier 2007 5 janv. 2007 à 18:09
Moi ce qui m'interesserais ca serait de retrouver le type de l'objet alloue.
Ca pourrait etre pratique d'avoir direcment le type de l'objet qui n'est pas correctement desalloue quand on utilise un memory manager.
Car tres souvent on oublie de detruit les Singletons.
b Oo
Messages postés1Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention10 décembre 2006 10 déc. 2006 à 09:58
Bonjour,
c'est quand même pas exactement ça le résultat produit (au moins avec gcc).
Cela affiche le nom de la classe avec des chiffres.
Par exemple :
1A
Ceci car il faut differencier les objets.
koda_xii
Messages postés9Date d'inscriptionvendredi 16 avril 2004StatutMembreDernière intervention23 janvier 2006 23 janv. 2006 à 17:56
bonjour
admettons qu'on veuille écrire une classe de qui écrive des traces et des logs redirigés vers une sortie standard.
on veut quelque chose du type:
maclasse::MaMethodeQuiPlante()
{
il serait pratique de ne pas avoir à recopier à chaque fois ::MaMethodeQuiPlante
combinée à la surcharge d'opérateur cette astuce serait bien pratique si on pouvait récupérer le nom de la méthode
cs_poppyto
Messages postés540Date d'inscriptiondimanche 29 décembre 2002StatutModérateurDernière intervention13 mai 2011 19 janv. 2006 à 18:51
> xterminhate
Pour la 3ième fois -> une astuce est une astuce. Si des programmeurs ont créé cette bilbliothèque, c'est qu'il y avait un besoin. Mais je suis entièrement d'accord pour dire que la conception polymorphe est largement plus avantageuse.
Pour conclure, c'est une ASTUCE (et de 4!).
xterminhate
Messages postés371Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention23 septembre 2009 19 janv. 2006 à 18:10
Donne moi un exemple d'application qui ne puisse pas avantageusement être remplacé par une conception à base de polymorhpisme d'execution.
Cordialement,
Xter.
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 19 janv. 2006 à 17:38
Oui j'avoue j'ai seulement lu l'explication la deuxième fois que j'ai ouvers cette page :)
cs_poppyto
Messages postés540Date d'inscriptiondimanche 29 décembre 2002StatutModérateurDernière intervention13 mai 2011 19 janv. 2006 à 16:10
>>Luthor
Tu as aussi le droit de lire l'explication, je cite:
"Les puristes vous diront que le langage objet est fait pour se délester des problèmes de typage grâce aux fonctions virtuelles. Certes, mais une astuce reste une astuce et des fois ça peut nous sortir du pétrin donc autant en faire profiter !"
Et par ailleurs je suis du même avis que toi ^^ mais une astuce reste une astuce.
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 19 janv. 2006 à 15:13
Il me semblait que connaitre le type à l'éxécution n'était pas utile et surtout, refletait une mauvaise programmation. non ?
cs_poppyto
Messages postés540Date d'inscriptiondimanche 29 décembre 2002StatutModérateurDernière intervention13 mai 2011 18 janv. 2006 à 11:18
Effectivement avec les objets dynamique VS envoie un warning, il faut rajouter /GR aux options de compilation, j'ai mis ma source à jour ^^.
Merci
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 18 janv. 2006 à 11:00
salut,
ton exemple n'a pas beaucoup d'interet, car l'information de typage est ici connu a la compilation et pas a l'execution (pas pendant le runtime) puisque tes objets sont pas alloués dynamiquement.
Pour faire quelque chose d'un peu plus malin:
class A
{
public:
virtual ~A(){}; // au moins une fonction virtual necessaire pour que le compilo utilise une table de typage dynamique a l'execution
};
class B : public A
{
};
A* ptr1 = new A;
A* ptr2 = new B; // licite car B derive de A
cout << "ptr1 est de type : " << typeid(*ptr1).name() << endl;
cout << "ptr2 est de type : " << typeid(*ptr2).name() << endl;
on voit que pour bien obtenir ce qu'il faut ( ptr1 de class A, ptr2 de class B), il faut avoir activé enable RunTime Type Info dans vs7.
5 janv. 2007 à 18:09
Ca pourrait etre pratique d'avoir direcment le type de l'objet qui n'est pas correctement desalloue quand on utilise un memory manager.
Car tres souvent on oublie de detruit les Singletons.
10 déc. 2006 à 09:58
c'est quand même pas exactement ça le résultat produit (au moins avec gcc).
Cela affiche le nom de la classe avec des chiffres.
Par exemple :
1A
Ceci car il faut differencier les objets.
23 janv. 2006 à 17:56
admettons qu'on veuille écrire une classe de qui écrive des traces et des logs redirigés vers une sortie standard.
on veut quelque chose du type:
maclasse::MaMethodeQuiPlante()
{
MaTrace.Screen("maclasse::MaMethodeQuiPlante");
InstructionQuiPlante();
MaTrace.out();
}
il serait pratique de ne pas avoir à recopier à chaque fois ::MaMethodeQuiPlante
combinée à la surcharge d'opérateur cette astuce serait bien pratique si on pouvait récupérer le nom de la méthode
19 janv. 2006 à 18:51
Pour la 3ième fois -> une astuce est une astuce. Si des programmeurs ont créé cette bilbliothèque, c'est qu'il y avait un besoin. Mais je suis entièrement d'accord pour dire que la conception polymorphe est largement plus avantageuse.
Pour conclure, c'est une ASTUCE (et de 4!).
19 janv. 2006 à 18:10
Cordialement,
Xter.
19 janv. 2006 à 17:38
19 janv. 2006 à 16:10
Tu as aussi le droit de lire l'explication, je cite:
"Les puristes vous diront que le langage objet est fait pour se délester des problèmes de typage grâce aux fonctions virtuelles. Certes, mais une astuce reste une astuce et des fois ça peut nous sortir du pétrin donc autant en faire profiter !"
Et par ailleurs je suis du même avis que toi ^^ mais une astuce reste une astuce.
19 janv. 2006 à 15:13
18 janv. 2006 à 11:18
Merci
18 janv. 2006 à 11:00
ton exemple n'a pas beaucoup d'interet, car l'information de typage est ici connu a la compilation et pas a l'execution (pas pendant le runtime) puisque tes objets sont pas alloués dynamiquement.
Pour faire quelque chose d'un peu plus malin:
class A
{
public:
virtual ~A(){}; // au moins une fonction virtual necessaire pour que le compilo utilise une table de typage dynamique a l'execution
};
class B : public A
{
};
A* ptr1 = new A;
A* ptr2 = new B; // licite car B derive de A
cout << "ptr1 est de type : " << typeid(*ptr1).name() << endl;
cout << "ptr2 est de type : " << typeid(*ptr2).name() << endl;
on voit que pour bien obtenir ce qu'il faut ( ptr1 de class A, ptr2 de class B), il faut avoir activé enable RunTime Type Info dans vs7.
et voila ... update ta source avec cette remarque
a+