Question de C++ sur les &truc = pouet;

Question de C++ sur les &truc = pouet; - C++ - Programmation

Marsh Posté le 29-01-2003 à 19:00:24    

J'ai dans une fonction :
 
  const oaTransform         &xform_=getCurrentTransform();
 
Je voudrais passer ca dans le constructeur de la classe de base.
 
Dans le .h je declare quoi ?
 
const oaTransform         &xform_; ?
 
et dans le constructeur je mets quoi ?
 
&xform(getCurrentTransform()) ?
 
ensuite pour l'utilisation de cette variable sachant qu'avant il y avait par exemple :
 
    instBox.transform(getCurrentTransform());
 
je remplace par
 
    instBox.transform(&xform_);
 
ou par  
 
    instBox.transform(xform_);
 
Merci d'avance pour les eclaircissements (il est tard :D)

Reply

Marsh Posté le 29-01-2003 à 19:00:24   

Reply

Marsh Posté le 29-01-2003 à 19:10:48    

en fait j'ai un peu de mal à te comprendre
est ce que tu veux conserver la référence comme donnée membre de ta classe ou j'ai pas compris ce que tu voulais faire ?

Reply

Marsh Posté le 29-01-2003 à 19:13:57    

gloop a écrit :

en fait j'ai un peu de mal à te comprendre
est ce que tu veux conserver la référence comme donnée membre de ta classe ou j'ai pas compris ce que tu voulais faire ?


 
le truc c'est qu'en gros    
 
const oaTransform         &xform_=getCurrentTransform(); est declaree dans plusieurs classes derivees, et parfois meme getCurrentTransform() est utilise la ou on pourrait utiliser xform_.
Donc pour unifier tout ca je voudrais passer l'initialisation de xform_ dans le constructeur en protected et ne plus utiliser que xform_ dans les classes derivees.


Message édité par joce le 29-01-2003 à 19:15:02
Reply

Marsh Posté le 29-01-2003 à 19:20:01    

tu peux pas avoir de références sans les initialiser, du coup si tu la veux comme donnée membre de ta classe tu dois déclarer un  
oaTransform xform_. Dabs ton constructeur, tu fais une copie de l'objet donné par getCurrentTransorm (), soit:
 

Code :
  1. xform_ = getCurrentTransform ();


et pour l'utilisation ca change rien.
 
Mais bon,c une copie de l'objet , ptet qu'il te faut vraiment une référence ?

Reply

Marsh Posté le 29-01-2003 à 19:34:41    

sinon tu utilises directement getCurrentTransform() partout ou tu utilises xform_. Si getCurrentTransform () est un simple accesseur ca changera rien. sauf un appel de fonction supplémentaire. Mais si  en + c une fonction inline, alors ca changera rien

Reply

Marsh Posté le 29-01-2003 à 19:47:02    

gloop a écrit :

tu peux pas avoir de références sans les initialiser, du coup si tu la veux comme donnée membre de ta classe tu dois déclarer un  
oaTransform xform_. Dabs ton constructeur, tu fais une copie de l'objet donné par getCurrentTransorm (), soit:
 

Code :
  1. xform_ = getCurrentTransform ();


et pour l'utilisation ca change rien.
 
Mais bon,c une copie de l'objet , ptet qu'il te faut vraiment une référence ?


humm ok, mais c'est bizarre, parce que dans le .h y a d'autre variable du style  
 
Boolean &machin; de déclaré.
 
Sinon la fonction transform prend comme param un & oaTransform const.
 
Donc à priori dans mon constructeur je fous un xform_(getCurrentTransform()) et ensuite je balance un instBox.transform(&xform_);  ?
 
 

Reply

Marsh Posté le 29-01-2003 à 19:50:46    

pour les références t'as pas besoin de & devant,
instBox.transform(xform_);
et pas instBox.transform(&xform_);

Reply

Marsh Posté le 29-01-2003 à 19:56:49    

gloop a écrit :

pour les références t'as pas besoin de & devant,
instBox.transform(xform_);
et pas instBox.transform(&xform_);

je dois bien foutre un & quelque part quand même [:wam]

Reply

Marsh Posté le 29-01-2003 à 19:59:50    

j'adore le mix avec les pouet et les machins :D

Reply

Marsh Posté le 29-01-2003 à 20:00:02    

Le & tu le mets que pour la déclaration pour dire que c'est une référence. ensuite tu l'utilises "normalement", tout est transparent pour toi

Reply

Marsh Posté le 29-01-2003 à 20:00:02   

Reply

Marsh Posté le 29-01-2003 à 20:02:08    

ah ba donc dans le constructeur je dois bien mettre  
&xform_(getCurrentTransform()) ? :pt1cable:

Reply

Marsh Posté le 29-01-2003 à 20:06:33    

dans ta classe tu mets comme donnée membre:
oaTransform &xform_;
 
et dans ton constructeur:
xform_=getCurrentTransform();  

Reply

Marsh Posté le 29-01-2003 à 20:08:30    

gloop a écrit :

dans ta classe tu mets comme donnée membre:
oaTransform &xform_;
 
et dans ton constructeur:
xform_=getCurrentTransform();  
 


ok !
donc dans mon .h je fous oaTransform &xform_;
et dans le constructeur xform_(getCurrentTransform());
 

Reply

Marsh Posté le 29-01-2003 à 22:28:57    

Code :
  1. class A {
  2. public:
  3.    int & b;
  4.    A(int& _b) : b(_b) {}
  5. };
  6. int c = 0;
  7. A a(c);
  8. cout << a.b; // ici a.b vaut 0
  9. c = 3;
  10. cout << a.b ; // ici a.b vaut 3


 
LeGreg


---------------
voxel terrain render engine | animation mentor
Reply

Marsh Posté le 29-01-2003 à 22:32:08    

thx ! :)

Reply

Marsh Posté le 30-01-2003 à 06:10:42    

J'espère que joce maîtrise mieux le php que le C++ :sweat: .


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 30-01-2003 à 13:32:02    

Musaran a écrit :

J'espère que joce maîtrise mieux le php que le C++ :sweat: .

je maitrise pas le C++, j'en ai quasiment jamais fait

Reply

Marsh Posté le 31-01-2003 à 04:24:13    

Je suis prêt à te répondre du haut de mon... amateurisme. :whistle:
 
Juste une remarque: essaie de donner plus de contexte dans tes question, surtout des extraits 'indépendants' de code.
Autrement l'interprétation de la description et de la terminologie du problème est laissé à l'imagination et risque d'être... créative. :D
 
Si une image vaut mille mots, un exemple en vaut bien cent. :jap:


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 31-01-2003 à 04:26:30    

Musaran a écrit :

Je suis prêt à te répondre du haut de mon... amateurisme. :whistle:
 
Juste une remarque: essaie de donner plus de contexte dans tes question, surtout des extraits 'indépendants' de code.
Autrement l'interprétation de la description et de la terminologie du problème est laissé à l'imagination et risque d'être... créative. :D
 
Si une image vaut mille mots, un exemple en vaut bien cent. :jap:

disons que c'est facile à faire quand on maitrise un peu plus le sujet ;)

Reply

Sujets relatifs:

Leave a Replay

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