IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

petit problème de classe


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Points : 61
    Points
    61
    Par défaut petit problème de classe
    voila, je m'entraine à faire passer des valeurs d'une fonction vers une fonction membre d'une class grâce aux pointeurs. Seulement j'ai un petit problème lors de la compilation. Il me signale qu'il ne peut pas convertir double en double .
    J'avoue que j'ai pas trop suivit.

    le code est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #include <iostream>
    #include <cstdlib>
    #include <cstdio>
    #include <math.h>
     
    using namespace std;
     
    class chgcoord
    {
    	public:
     
    		double changement_de_coordonnees(double* r, double* t, double* f)
    	{
    		double x=r*cos(t)*sin(f);
    		double y=r*sin(f)*sin(t);
    		double z=r*cos(f);
    		return x,y,z;
    	}
    	protected :
     
    };
     
    int main()
    {
    	double r=20;
    	double t=45;
    	double f=45;
     
    	chgcoord cc;
     
    	chgcoord* pcc;
    	pcc = &cc;
    	pcc->changement_de_coordonnees(&r,&t,&f);
    	cout<< " x = " << x << endl << "y = " << y << endl << "z=" << z << endl;
    	system ("PAUSE");
    }
    Merci d'avance pour votre aide

  2. #2
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    double changement_de_coordonnees(double* r, double* t, double* f)
    	{
    		double x=r*cos(*t)*sin(*f);
    		double y=r*sin(*f)*sin(*t);
    		double z=r*cos(*f);
    		return x,y,z; //quant a ça aucune de ce que ça donne, un seul return par fonction
    	}
    tu veux la valeur, pas l'adresse de ta valeur.
    "vaste programme"

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 126
    Points : 149
    Points
    149
    Par défaut
    Bonjour,

    Beaucoup de points qui ne vont pas :
    - dans ta version, changement_de_coordonnees doit retourner un double ce que tu ne fais pas.
    - x, y, z sont définis localement dans ta méthode de classe (donc inaccessibles car inexistants ailleurs.

    J'ai corrigé les quelques points évidents pour te permettre de continuer.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #include <iostream>
    #include <cstdlib>
    #include <cstdio>
    #include <math.h>
     
    using namespace std;
     
    class chgcoord
    {
        public:
     
            double x, y, z;
     
            void changement_de_coordonnees(double* r, double* t, double* f)
            {
                x=r*cos(t)*sin(f);
                y=r*sin(f)*sin(t);
                z=r*cos(f);
     
            }
        protected :
     
    };
     
    int main()
    {
        double r=20;
        double t=45;
        double f=45;
     
        chgcoord* pcc = new chgcoord();
        pcc->changement_de_coordonnees(&r,&t,&f);
        cout<< " x = " << pcc->x << endl << "y = " <<  pcc->y << endl << "z=" << pcc->z << endl;
        system ("PAUSE");
    }
    A+,
    Agamitsudo.
    Un ordinateur fait au bas mot 1 million d'opérations à la seconde, mais il n'a que ça à penser, aussi. (brèves de comptoirs, JM.Gourio)


  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 126
    Points : 149
    Points
    149
    Par défaut
    J'ai laissé une erreur ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            void changement_de_coordonnees(double* r, double* t, double* f)
            {
                double rr, tt, ff;
                rr = *r;
                tt = *t;
                ff = *f;
     
                x=r*cos(t)*sin(f);
                y=r*sin(f)*sin(t);
                z=r*cos(f);
     
            }
    Mais sinon, je trouve que ce code n'a pas beaucoup de sens. Quelles sont les questions que tu te posais autour de ce test ?

    A+,
    Agamitsudo.
    Un ordinateur fait au bas mot 1 million d'opérations à la seconde, mais il n'a que ça à penser, aussi. (brèves de comptoirs, JM.Gourio)


  5. #5
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    et puis j avais pas vu mais ca peux pas marcher !
    ton main ne connait pas les variables x y et z.
    (une variable n'a que la portée des accolades qui l'entoure).

    De plus une methode ne peux retourner qu une seule variable, ici il faudrait faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    #include <iostream>
    #include <cstdlib>
    #include <cstdio>
    #include <math.h>
     
    using namespace std;
     
    class chgcoord
    {
    	public:
     
    		void changement_de_coordonnees(double* r, double* t, double* f, double* x, double *y, double *z )
    	{
    		double *x=(*r)*cos(*t)*sin(*f);
    		double *y=(*r)*sin(*f)*sin(*t);
    		double *z=(*r)*cos(*f);
    	}
    	protected :
     
    };
     
    int main()
    {
    	double r=20;
    	double t=45;
    	double f=45;
     
    double res1 = 0;
    double res2 = 0;
    double res3 = 0;
     
    	chgcoord cc;
     
    	chgcoord* pcc;
    	pcc = &cc;
    	pcc->changement_de_coordonnees(&r,&t,&f, &res1, &res2, &res3 );
    	cout<< " x = " << res1 << endl << "y = " << res2 << endl << "z=" << res3 << endl;
    	system ("PAUSE");
    }
    revois les notions de bases, ils te restent un ou deux flottement.
    Il faut que tu connaisses tout ca sur le bout des doigts pour continuer

    courage
    "vaste programme"

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Points : 61
    Points
    61
    Par défaut
    Ici, j'essaie simplement de passer de coordonnées polaire à des coordonnées cartésiennes.

    Si je comprend bien, je ne peux retourner qu'une valeur par fonction. Donc si je veux les coordonnées dans l'espace, il me faudra 3 fonctions différentes??

    Sinon, moi ce que j'ai essayer de faire avec cette class, c'est un peu comme on fait avec une fonction. Ce que j'ai essayé de faire c'est d'envoyer l'adresse des mes variables à la fonction membre pour qu'elle puisse les modifier.

    Si jamais je crée 3 fonctions différentes, et que je passe mes coordonnées de départ par valeur, est ce que c'est correcte??

    P.S: quand je compile le code que vous m'avez passé,il me marque toujours la même erreur

  7. #7
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    Pour ton probleme de retour de fonction, dans ma solution je passe en argument 3 pointeurs sur double qui servent a retourner le resultat.

    Pour ton probleme de compilation c'est sur quel code, quelle ligne et le message exact du compilo stp

    en fait, j avais pas vu que tu declarais tes 3 coord x,y et z dans ta classe.
    mais pour les atteindre faut faire
    cc.x
    cc.y
    cc.z

    ou par ton pointeur avec des "->"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    #include <iostream>
    #include <cstdlib>
    #include <cstdio>
    #include <math.h>
     
    using namespace std;
     
    class chgcoord
    {
    	public:
    	        double x, y, z;
    		void changement_de_coordonnees(double* r, double* t, double* f )
    	{
    		x=(*r)*cos(*t)*sin(*f);
    		y=(*r)*sin(*f)*sin(*t);
    		z=(*r)*cos(*f);
    	}
    	protected :
     
    };
     
    int main()
    {
    	double r=20;
    	double t=45;
    	double f=45;
     
    	chgcoord cc;
            //pas besoin de passer par un pointeur, un simple objet suffit tres bien
            // et ca evite de faire de l allocation dynamique, ou de passer l adresse de ton obj a un pointeur
    	cc.changement_de_coordonnees(&r,&t,&f);
     
    	cout<< " x = " << cc.x << endl << "y = " << cc.y << endl << "z=" << cc.z << endl;
    	system ("PAUSE");
    }
    "vaste programme"

  8. #8
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Les gens, les références ca existe.
    Et puis une fonction qui passe du carthésien au polaire et qui prend 6 paramètres , je trouve ca beaucoup.
    Voici ce que je propose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
     
    #include <iostream>
    #include <cmath>
     
    using namespace std;
     
    class chgcoord
    {
    	public:
     
    	struct carthe 
                 {
                    double x,y,z;  
                    carthe(double xx=0,double yy=0,double zz=0):x(xx),y(yy),z(zz){} 
                 };
     
                 struct pol {double r,t,f;pol(double rr,double tt,double ff):r(rr),t(tt),f(ff){} };
     
                  static void changement_de_coordonnees(chgcoord::carthe& c,const chgcoord::pol& p  )
    	{
    		c.x=p.r*cos(p.t)*sin(p.f);
    		c.y=p.r*sin(p.f)*sin(p.t);
    		c.z=p.r*cos(p.f);
    	}
    };
     
    int main()
    {
                 chgcoord::pol p(20,45,45);
                 chgcoord::carthe result;
     
    	chgcoord::changement_de_coordonnees(result, p);
    	cout<< " x = " << result.x << endl << "y = " << result.y << endl << "z=" << result.z << endl;
     
    }
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Points : 61
    Points
    61
    Par défaut
    l'erreur se trouve dans la première ligne de code de ma fonction membre. X étant une valeur du type double, et les valeurs passées à cos et à sin également, il me dit qu'il ne peut pas convertir des double en double dans l'initialisation.

  10. #10
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Points : 61
    Points
    61
    Par défaut
    oki, j'ai trouvé mon erreur.

    Voila le code correcte. Il est sans doute pas très "élégant", mais il fonctionne parfaitement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    #include <iostream>
    #include <cstdlib>
    #include <cstdio>
    #include <math.h>
     
    using namespace std;
     
    class chgcoord
    {
    	public:
     
    		double changement_de_coordonneesX(double &r, double& t, double &f)
    	{
    		double x=r*cos(t)*sin(f);
     
    		return x;
    	}
    	   double changement_de_coordonneesY(double& r, double& t, double& f)
    	{
    		double y=r*sin(f)*sin(t);
    		return y;
    	}
    	double changement_de_coordonneesZ(double& r, double& t, double& f)
    	{
    		double z=r*cos(f);
    		return z;
    	}
    	protected :
     
    };
     
    int main()
    {
    	double r=20;
    	double t=45;
    	double f=45;
     
    	chgcoord cc;
     
    	chgcoord* pcc;
    	pcc = &cc;
     
    	double x= pcc->changement_de_coordonneesX(r,t,f);
    	double y= pcc->changement_de_coordonneesY(r,t,f);
    	double z=pcc->changement_de_coordonneesZ(r,t,f);
    	cout<< " x = " << x << endl << "y = " << y << endl << "z=" << z << endl;
    	system ("PAUSE");
    }
    Petite question au cas où, le sin et le cos de math .h prennent des valeurs en degré ou en radiant?

  11. #11
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    vmfa-2 sven >> assez peu pratique comme code. Le mien ne te convient pas ?

    Sinon, c'est des radians pour sin et cos.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  12. #12
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Points : 61
    Points
    61
    Par défaut
    ben c'est pas qu'il ne me convient pas, c'est juste qu'il y a une petite erreur de compilation et c'est surtout parce que je ne comprend encore pas tout ce que tu as noté.

  13. #13
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Le code compile, je l'ai testé.
    Que ne comprends tu pas quoi dans mon code ?
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  14. #14
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Points : 61
    Points
    61
    Par défaut
    je ne maitrise pas encore le type struct, je sais à quoi il sert, mais pas encore comment l'utiliser.
    concrètement ce que je ne comprend pas, c'est ce que tu as écrit après les ':' dans les fonctions carth et pol. mais c'est surtout le code la fonction static void.

  15. #15
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    struct c'est comme une classe sauf que par défaut les membres sont publiques et non privé.

    Ensuite j'ai crée les classes pol et carth à l'intérieur de la classe chgcoord.
    Donc pour y avoir accès, on doit faire précéder leur nom de chgcoord::.

    et puis le code de la fonction static, c'est le même que le tient. Je ne comprends pas ce que tu ne comprends pas
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  16. #16
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Points : 61
    Points
    61
    Par défaut
    voila, désolé pour le retard, mais j'ai préféré revoir certains aspects théoriques avant de poser mes questions. histoire de na pas dire trop de bêtises.

    Voila, j'ai recopié ton code et mis les question que j'ai en commentaire devant la ligne correspondante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #include <iostream>
    #include <cmath>
     
    using namespace std;
     
    class chgcoord
    {
    	public:
     
    	struct carthe 
    	{
                    double x,y,z;  
                    carthe(double xx=0,double yy=0,double zz=0):x(xx),y(yy),z(zz){} //construire x en utilisant xx du constructeur de la classe??? et pourquoi égale à 0??
    	};
     
    	struct pol 
    	{
    		double r,t,f; 
    		pol(double rr,double tt,double ff):r(rr),t(tt),f(ff){} //costruire r en utilisant rr du constructeur de la classe pol???
    	};
     
    	static void changement_de_coordonnees(chgcoord::carthe& c,const chgcoord::pol& p)//je peux avoir un petit mots d'explication stp sur les arguments de cette fonctioon stp???
    	{
    		c.x=p.r*cos(p.t)*sin(p.f);// si c et p sont des objets, où ont - il été défini??
    		c.y=p.r*sin(p.f)*sin(p.t);
    		c.z=p.r*cos(p.f);
    	}
    };
     
    int main()
    {
                 chgcoord::pol p(20,45,45); // ici on crée un objet p de la classe chgcoord en envoyant un constructeur les 3 valeurs
                 chgcoord::carthe result;// ici on crée un objet result  qui provient 
     
    	chgcoord::changement_de_coordonnees(result, p);
    	cout<< " x = " << result.x << endl << "y = " << result.y << endl << "z=" << result.z << endl;
     
    }
    Pour les 2 premières questions, j'ai énormément de mal avec la construction des membres de données complexe. Même après avoir lu plusieurs foi les pages de mon livre, c'est une manipulation que je n'arrive pas à cerner.

    Merci d'avance pour vos explications!!!

  17. #17
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Tu ne comprend pas quoi ? Le passage par référence ?
    L'utilisation du point pour accéder au données membres ?
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  18. #18
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Points : 61
    Points
    61
    Par défaut
    ben j'ai mis toutes les questions en commentaire devant chaque ligne du code. comme ca, vous pouvez voir exactement sur quoi porte la question.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #include <iostream>
    #include <cmath>
     
    using namespace std;
     
    class chgcoord
    {
    	public:
     
    	struct carthe 
    	{
                    double x,y,z;  
                    carthe(double xx=0,double yy=0,double zz=0):x(xx),y(yy),z(zz){} //construire x en utilisant xx du constructeur de la classe??? et pourquoi égale à 0??
    	};
     
    	struct pol 
    	{
    		double r,t,f; 
    		pol(double rr,double tt,double ff):r(rr),t(tt),f(ff){} //costruire r en utilisant rr du constructeur de la classe pol???
    	};
     
    	static void changement_de_coordonnees(chgcoord::carthe& c,const chgcoord::pol& p)//je peux avoir un petit mots d'explication stp sur les arguments de cette fonctioon stp???
    	{
    		c.x=p.r*cos(p.t)*sin(p.f);// si c et p sont des objets, où ont - il été défini??
    		c.y=p.r*sin(p.f)*sin(p.t);
    		c.z=p.r*cos(p.f);
    	}
    };
     
    int main()
    {
                 chgcoord::pol p(20,45,45); // ici on crée un objet p de la classe chgcoord en envoyant un constructeur les 3 valeurs
                 chgcoord::carthe result;// ici on crée un objet result  qui provient 
     
    	chgcoord::changement_de_coordonnees(result, p);
    	cout<< " x = " << result.x << endl << "y = " << result.y << endl << "z=" << result.z << endl;
     
    }

  19. #19
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    1. Le constructeur de carthe fait appel au constructeur de double dans sa liste d'initialisation. Le constructeur de double n'existe pas vraiment, c'est juste "faire une copie".
    2. Pareil pour le constructeur de pol
    3. Les arguments représentent un passage par référence: c référence un objet de type carthe, et c'est une référence non-constante qui permet de modifier l'objet référencé. p référence un objet de type pol, et c'est une référence constante qui ne permet pas de modifier l'objet référencé.
    4. L'objet result ne "provient" de rien : C'est son constructeur par défaut qui est appelé.
    5. L'appel de fonction lui passe une référence à chacun des deux objets. La fonction peut ainsi modifier result en fonction des données de p.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  20. #20
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Points : 61
    Points
    61
    Par défaut
    merci beaucoup!!! je commençais à désespérer.

    J'ai tout compris, sauf le point un, mais la je crois que c'est un peut ma faute, il faut que je rebosse ça comme il faut.

    Merci encore!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Petit problème de classe foncteur template
    Par ailonn dans le forum C++
    Réponses: 6
    Dernier message: 18/06/2011, 23h25
  2. Réponses: 1
    Dernier message: 28/10/2010, 16h16
  3. Java class + Java Bean d'interface = petit problème
    Par Nyphel dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 30/01/2007, 14h52
  4. Réponses: 4
    Dernier message: 15/10/2006, 18h05
  5. [VB.NET]petit problème avec la classe string !!
    Par zouhib dans le forum Windows Forms
    Réponses: 6
    Dernier message: 01/06/2006, 11h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo