Constructeur de conversion explicite [Résolu]

Messages postés
52
Date d'inscription
dimanche 6 décembre 2009
Statut
Membre
Dernière intervention
23 janvier 2014
- - Dernière réponse : cptpingu
Messages postés
3835
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
10 juin 2019
- 9 nov. 2010 à 23:56
bonjour les gars;
comme je suis un débutant en c++, j'aimerais bien savoir comment on pourrait convertir un nombre de type quelconque en un nombre de type 'COMPLEXE' via un constructeur de conversion explicite autre que celui défini par la classe suivante :
#include 
class complex
{
   public:
     complex(double=0.,double=0.);
     complex operator+=(complex);
     complex operator-=(complex);
   private:
     double a,b;
}

Ceci bien sûr de tel sorte à ce que mon constructeur par défaut fasse lui-même la conversion exlpicite comme c'est le cas pour les autres types prédéfinis [CE QUI EST UN PEU EMBARRASSANT].je vous serais très reconnaissant de me répondre à ce message.
ET MERCI D'AVANCE
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
3835
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
10 juin 2019
84
3
Merci
Que cherches-tu à faire ?
A faire en sorte qu'un nombre réel soit convertis en nombre complexe ?

Dans ce cas tu fais un deuxième constructeur qui prend un en argument un nombre réel.

complex::complex(double i = 0.)
 : a(i), b(0)
{
}


Ainsi, une variable de type complexe peut être initialisé avec un nombre réel.
Pour faire des calculs entre un nombre réel et un nombre imaginaire, il te faut aussi redéfinir les operateurs de ta classe (tu en ajoutes d'autre).
     complex operator+=(complex);
     complex operator-=(complex);
     complex operator+=(double);
     complex operator-=(double);


Quelques remarques totalement facultatives:
- Une classe prend généralement une majuscule
- Un attribut de classe est différencié des variables par un "_". Exemple: a devient _a
- Indique le nom de la variable dans un prototype de fonction plutot que de mettre que le type, c'est plus lisible.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 133 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cptpingu
Messages postés
3835
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
10 juin 2019
84
3
Merci
Si tu as bien tout suivi, tu peux faire ceci:

Complexe c(0,0);
double d = -12.543;
c = d;


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 133 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cptpingu
Messages postés
52
Date d'inscription
dimanche 6 décembre 2009
Statut
Membre
Dernière intervention
23 janvier 2014
0
Merci
merci pour la réponse...tout est clair maintenant à part un détail: est-t-il préférable de déclarer une méthode pour transférer une variable dans la partie imaginaire , ou bien est-ce que c aussi faisable avec mon constructeur par défaut? JE M'EXPLIQUE :
>dans le cas ou j'ai un double -12.543 que j'ai reçu comme donnée du DELTA d'une équation , ce qui veut dire bien évidemment qu'il faut le convertir en un '(12.543)i'.
Commenter la réponse de eishtein