AddScript

AddScript - C++ - Programmation

Marsh Posté le 25-07-2003 à 22:13:46    

[:prosterne] ++Taz
Peut tu nous expliquer ceci en detail stp.
 
struct Foo::AddScript
    {
          AddScript(const Foo &lhs, const Foo &rhs)
            : m_lhs(lhs),
              m_rhs(rhs)
          {}
         
          operator Foo() const
          {
                cout << "AddScript::Foo()\n";
             
                Foo tmp(m_lhs);
                tmp+=m_rhs;
                return tmp;
          }
         
          const Foo &m_lhs;
          const Foo &m_rhs;
    };

Reply

Marsh Posté le 25-07-2003 à 22:13:46   

Reply

Marsh Posté le 25-07-2003 à 22:17:53    

Code :
  1. struct Foo::AddScript
  2. // AddScript est un type déclaré à l'intérieur de la classe Foo  
  3. // le but de cette classe est de porter 2 références à des objets  
  4. // de type Foo
  5. // l'acces est public par defaut
  6.    {
  7. // constructeur avec 2 arguments   
  8.       AddScript(const Foo &lhs, const Foo &rhs)
  9.             : m_lhs(lhs),
  10.               m_rhs(rhs)
  11. // les réferences n'ont pas de valeur par défaut et doivent donc etre absolument initialisée   
  12.           {}
  13. // plus rien à faire         
  14.           operator Foo() const
  15. // operateur de conversion de AssScript en Foo
  16.           {
  17.                 cout << "AddScript::Foo()\n";
  18.            
  19.                 Foo tmp(m_lhs);
  20.                 tmp+=m_rhs;
  21.                 return tmp;
  22. // apres quelque calcul on retourne bien un objet de type Foo
  23.           }
  24.        
  25. // les deux membres
  26. // 2 réferences constantes
  27.           const Foo &m_lhs;
  28.           const Foo &m_rhs;
  29.     };

Reply

Marsh Posté le 25-07-2003 à 22:32:30    

:pt1cable: mais merci quand meme :jap:

Reply

Marsh Posté le 26-07-2003 à 10:51:37    

en fait mon probleme de comprehension a la base venait du fait que je me souvenais plus que

Code :
  1. AddScript(const Foo &lhs, const Foo &rhs)
  2.                 : m_lhs(lhs),
  3.                   m_rhs(rhs) 
  4.               {}


etait egal à

Code :
  1. AddScript(const Foo &lhs, const Foo &rhs)
  2. {
  3. m_lhs = lhs;
  4. m_rhs = rhs;
  5. }


Alors j'etais un peu paumé pour la suite
 :sweat:  
 
Je me sers jamais de cette syntaxe


Message édité par polo021 le 26-07-2003 à 10:52:18
Reply

Marsh Posté le 26-07-2003 à 10:52:11    

non, c'est pas du tout équivalent

Reply

Marsh Posté le 26-07-2003 à 10:52:44    

a ben mince alors  :pt1cable:


Message édité par polo021 le 26-07-2003 à 10:52:59
Reply

Marsh Posté le 26-07-2003 à 10:53:59    

polo021 a écrit :

a ben mince alors  :pt1cable:  

fais une classe aec des jolis messages dans les différents constructeurs et amuse toi à la mettre comme membre dans une autre. vois la différence, tu comprendras

Reply

Marsh Posté le 26-07-2003 à 11:18:41    

un genre comme ca

Code :
  1. class CClasse1 
  2. {
  3. public:
  4. CClasse1();
  5. CClasse1(int, float);
  6. int entier;
  7. float reel;
  8. virtual ~CClasse1();
  9. class CClasse2 
  10. {
  11. public:
  12.  CClasse2();
  13.  CClasse2(int, float);
  14.  int entier2;
  15.  float reel2;
  16.  virtual ~CClasse2();
  17. };
  18. };

:??:
Comment je dois faire pour creer un objet classe2??

Reply

Marsh Posté le 26-07-2003 à 11:22:34    

boolay....
 
quand l'{ d'un constructeur est ouverte, tous les membres sont correctement construit : seulement voilà, des fois tes membres ont pas de constructeurs par défaut ou doivent etre initialisée (constantes), ou alors tu te dis que c'est bien joli, mais construire un objet par défaut, tout casser, puis réaffecter dans le constructeur, ça a un certain coup


Message édité par Taz le 26-07-2003 à 11:25:51
Reply

Marsh Posté le 26-07-2003 à 11:44:49    

quel est le rapport?
 
EDIT :  
Je susi bete.
je crois que je viens de piger a retardement.
 
Donc si je construis un objet CClasse1, j'aurai automatiquement aussi un objet CClasse2 puisque CClasse2 est un membre de CClasse1.
Mais quelle est la syntaxe pour utiliser un objet CClasse2?


Message édité par polo021 le 26-07-2003 à 11:49:32
Reply

Marsh Posté le 26-07-2003 à 11:44:49   

Reply

Marsh Posté le 26-07-2003 à 11:53:31    

non, t'as tout faux...

Reply

Marsh Posté le 26-07-2003 à 12:01:08    

les CV mensongers, c'est mal http://users.skynet.be/polo021/cv.html

Reply

Marsh Posté le 26-07-2003 à 12:02:24    


 
 [:glass]

Reply

Marsh Posté le 26-07-2003 à 12:07:39    

Taz a écrit :

non, t'as tout faux...


explique moi alors  :pfff:
 
EDIt : mon cv est pas mensonger d'abord, y juste que je dis pas à quel niveau je me trouve  :o


Message édité par polo021 le 26-07-2003 à 12:08:19
Reply

Marsh Posté le 26-07-2003 à 12:08:17    

polo021 a écrit :


explique moi alors  :pfff:  


 
j'crois qu'il vaudrait mieux que tu abandonnes là parce que tu t'enfonces de message en message ...

Reply

Marsh Posté le 26-07-2003 à 12:09:02    

Tchoupinette a écrit :


 
j'crois qu'il vaudrait mieux que tu abandonnes là parce que tu t'enfonces de message en message ...


m'en fout je veux comprendre, ses explications ne sont pas des plus claires non plus  :o

Reply

Marsh Posté le 26-07-2003 à 12:09:30    

polo021 a écrit :


m'en fout je veux comprendre, ses explications ne sont pas des plus claires non plus  :o  


 
je sens que tu n'es pas sorti d'affaire là ...


---------------
http://membres.lycos.fr/axelfa
Reply

Marsh Posté le 26-07-2003 à 12:09:47    

Tchoupinette a écrit :


 
j'crois qu'il vaudrait mieux que tu abandonnes là parce que tu t'enfonces de message en message ...

oui et je suis pas payé. achète toi un bin vrai livre et voilà, par ce qu'il te manque pas ma de bases

Reply

Marsh Posté le 26-07-2003 à 12:11:13    

polo021 a écrit :


m'en fout je veux comprendre, ses explications ne sont pas des plus claires non plus  :o  

c'est toi qui merdoies le cas échéant. je te dis faire un test simple, et tu le fais pas. je te dis de faire un membre, tu fais une déclaration imbriquée

Reply

Marsh Posté le 26-07-2003 à 12:11:26    

j'ai commencé casteyde  :o  
 
Le pire c'est que j'ai les bases mais je m'en souviens plus trop bien [:sisicaivrai]

Reply

Marsh Posté le 26-07-2003 à 12:12:26    

polo021 a écrit :

j'ai commencé casteyde  :o  
 
Le pire c'est que j'ai les bases mais je m'en souviens plus trop bien [:sisicaivrai]

t'es balaise dans l'antiphrase

Reply

Marsh Posté le 26-07-2003 à 12:12:30    

polo021 a écrit :

j'ai commencé casteyde  :o  
 
Le pire c'est que j'ai les bases mais je m'en souviens plus trop bien [:sisicaivrai]


 
Moi je dis rien car moi je suis censée les avoir mais c pas tout à fait ca ...  :sarcastic:


---------------
http://membres.lycos.fr/axelfa
Reply

Marsh Posté le 26-07-2003 à 12:22:19    

Je suis un boolay
 
C'est tout simplement ca que tu voulais que je fasse?

Code :
  1. #include "stdafx.h"
  2. #include "Classe1.h"
  3. int main(int argc, char* argv[])
  4. {
  5. CClasse1 c1(1,2.5);
  6. return 0;
  7. }
  8. ----------------------------------------
  9. #include "Classe2.h"
  10. class CClasse1 
  11. {
  12. public:
  13. CClasse1();
  14. CClasse1(int, float);
  15. int entier;
  16. float reel;
  17. virtual ~CClasse1();
  18. CClasse2 c2;
  19. };


 

Constructeur CClasse2 par defaut
Constructeur CClasse1 (int, float)
Destructeur CClasse1
Destructeur CClasse2


Message édité par polo021 le 26-07-2003 à 12:22:59
Reply

Marsh Posté le 26-07-2003 à 12:24:21    

oui, maitenant compare la différence entre

Code :
  1. Classe1():
  2. c2(truc)
  3. {}
  4. // et
  5. Classe1()
  6. {
  7.   c2=truc;
  8. }


Message édité par Taz le 26-07-2003 à 12:26:51
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed