Bonjour tout le monnnnnnnde !!

Ma question porte aujourd'hui sur les cast et les types des classes.

J'aimerai réduire ce code pas très joli en une seule instruction plus élégante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Valeur* valeur = 0;
 
if (typeid(*og)==typeid(ValeurEntiere)) {
	valeur = new ValeurEntiere( ((ValeurEntiere *)og)->getValeur() + ((ValeurEntiere *)od)->getValeur());
}
else if (typeid(*og)==typeid(ValeurReelle)) {
	valeur = new ValeurReelle( ((ValeurReelle *)og)->getValeur() + ((ValeurReelle *)od)->getValeur());
}
else { //cest une chaine
	valeur = new ValeurChaine( ((ValeurChaine *)og)->getValeur() + ((ValeurChaine *)od)->getValeur());
}
Il faut savoir que ValeurEntiere, ValeurReelle et ValeurChaine héritent de Valeur

J'ai pensé créer une méthode polymorphe dans chacune de ces classes ou redéfinition de l'opérateur "+".
Avez-vous une manière élégante de faire ceci ?

Merci d'avance !