Constructeur de conversion explicite [Résolu]

eishtein 52 Messages postés dimanche 6 décembre 2009Date d'inscription 23 janvier 2014 Dernière intervention - 9 nov. 2010 à 17:18 - Dernière réponse : cptpingu 3794 Messages postés dimanche 12 décembre 2004Date d'inscription 10 juin 2018 Dernière intervention
- 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 

Votre réponse

3 réponses

Meilleure réponse
cptpingu 3794 Messages postés dimanche 12 décembre 2004Date d'inscription 10 juin 2018 Dernière intervention - 9 nov. 2010 à 18:01
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

Merci cptpingu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de cptpingu
Meilleure réponse
cptpingu 3794 Messages postés dimanche 12 décembre 2004Date d'inscription 10 juin 2018 Dernière intervention - 9 nov. 2010 à 23:56
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

Merci cptpingu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de cptpingu
eishtein 52 Messages postés dimanche 6 décembre 2009Date d'inscription 23 janvier 2014 Dernière intervention - 9 nov. 2010 à 23:37
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.