Constructeur de conversion explicite

Résolu
eishtein Messages postés 52 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 23 janvier 2014 - 9 nov. 2010 à 17:18
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 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

3 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
9 nov. 2010 à 18:01
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
3
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
9 nov. 2010 à 23:56
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
3
eishtein Messages postés 52 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 23 janvier 2014
9 nov. 2010 à 23:37
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'.
0
Rejoignez-nous