Question tout bête de passage par référence

Question tout bête de passage par référence - C++ - Programmation

Marsh Posté le 23-09-2004 à 19:26:17    

Veuillez excuser le côté newb de ma question mais je suis, le temps d'un stage, un transfuse de Delphi vers C++.
 
Comment faire pour que quand je fais :
 

Code :
  1. m_carray.Add(CMonObject("Coucou" ));


 
avec m_carray un CArray et CMonObjet une classe dérivant de CObject avec un constructeur que je vous laisse deviner ( :lol: ), je me paye pas le message suivant :  
 

Citation :

warning C4239: nonstandard extension used : 'argument' : conversion from 'class CMonObject' to 'class CMonObject &'

Reply

Marsh Posté le 23-09-2004 à 19:26:17   

Reply

Marsh Posté le 23-09-2004 à 19:43:22    

ton compilateur te fait un message bouseux ... en gros, de ce que je comprends, il te dit que passer un objet temporaire par référence (non-const) n'est pas standard : d'ailleurs, tu comprends bien que ça ne sert à rien, puisque tu ne peux pas récupérer les modifications ...

Reply

Marsh Posté le 23-09-2004 à 19:45:15    

J'avais bien compris. Mon compilo n'est autre que le célèbre (pour sacompatibilité légendaire) Visual C++ 6.0...
 
Donc a priori tu n'as rien de particulier à redire surl a méthode que j'emploie ? Il n'y a pas plus élégant et VC6-compliant ?

Reply

Marsh Posté le 23-09-2004 à 19:46:05    

t'as pas lu ce que j'ai dit ou quoi ?

Reply

Marsh Posté le 23-09-2004 à 19:47:48    

j'ai bien compris ton jugement vis à vis du message du compilo, je voulais juste savoir si la méthode employée ("le code" ) était la bonne / si tu n'en avais pas une meilleure dans tes manches.

Reply

Marsh Posté le 23-09-2004 à 19:51:02    

<mode pascal>
 
tu vois le var, pour passer un paramètre out, ben les références ça fait même emploi : tu vois un intérêt à passer un objet temporaire comme paramètre out ?

Reply

Marsh Posté le 23-09-2004 à 19:56:40    

donc ça révêle également un mauvais usage de ta part

Reply

Marsh Posté le 23-09-2004 à 20:02:46    

ok d'accord mais dans mon cas pour stocker des objects dans un CArray lors de leur création comment dois je procéder ? Parceque même si je comprend ton analogie avec var, le fait est que la méthode marche... mais comme j'aime pas faire une appli qui fait brailler le compilo...

Reply

Marsh Posté le 23-09-2004 à 20:07:49    

t'as rien compris du tout ...
 
SI LE COMPILO GUEULE C'EST PARCE QUE TU FAIS N'IMPORTE QUOI

Reply

Marsh Posté le 23-09-2004 à 20:09:39    

Ok.
 
DONC PLUTOT QUE D'ECRIRE EN CAPS, POURRAIS TU ME DONNER UN PETIT SAMPLE CONVERTISSANT MON CODE EXEMPLE EN CODE "OK" ?
 
(et dans ta grande mensuétude me dire comment un truc pareil peut marcher, car c'est quand même le cas)

Reply

Marsh Posté le 23-09-2004 à 20:09:39   

Reply

Marsh Posté le 23-09-2004 à 20:10:46    

Taz a écrit :

t'as rien compris du tout ...
 
SI LE COMPILO GUEULE C'EST PARCE QUE TU FAIS N'IMPORTE QUOI


 
D'ailleurs je vois pas le rapport entre cette réponse de ta part et la mienne au dessus ... aurais tu sauté une étape.
 
Bon, j'aime bien le style Taz, ça détend mais ça serait bien que tu donnes aussi un peu d'aide  :)  :ange:  ...

Reply

Marsh Posté le 23-09-2004 à 20:33:34    

Kyle_Katarn a écrit :

Bon, j'aime bien le style Taz


Un admirateur.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 23-09-2004 à 20:34:51    

non, un habitué !

Reply

Marsh Posté le 23-09-2004 à 20:41:28    

Essaye :

Code :
  1. CMonObject coucou("Coucou" );
  2. m_carray.Add(coucou);


 

Citation :

d'ailleurs, tu comprends bien que ça ne sert à rien, puisque tu ne peux pas récupérer les modifications ...


 
Ben si l'objet pèse 20 ko...


Message édité par el muchacho le 23-09-2004 à 20:45:24
Reply

Marsh Posté le 23-09-2004 à 20:44:54    

ok merci !

Reply

Marsh Posté le 23-09-2004 à 21:55:41    

ça ne résout pas le problème : passer un objet local par référence (non-const), quand tu retourneras à la portée supérieure, ça partira dans le décor ...
 
à toi de savoir ce que fait .Add et pourquoi ça demande une &

Reply

Marsh Posté le 23-09-2004 à 22:06:58    

Ben le problème c'est que c'est CArray donc un composant "de base" des MFC dont je doute que le code soit fournit (je me trompe ?)
 
MSDN : http://msdn.microsoft.com/library/ [...] carray.asp
 
Visiblement c'est la méthode El Muchacho (qui ne diffère pas énormément de la mienne conceptuellement) qui semble utilisée dans les tuto Carray que j'ai pu trouver...

Reply

Marsh Posté le 23-09-2004 à 22:10:09    

y a un problème là, la documentation dit qu'il s'agit d'une valeur en argument, pas d'une référence ...

Reply

Marsh Posté le 23-09-2004 à 22:15:58    

En fait tout dépend comment tu déclare la template. J'ai oublié de dire moi c'est <MonObjet, MonObjet&>
 
Faut il que je mette <MonObjet, MonObjet> ?

Reply

Marsh Posté le 23-09-2004 à 22:18:46    

[:hfrbaxter]


Message édité par chrisbk le 23-09-2004 à 22:18:56

---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 23-09-2004 à 22:19:40    

effectivement tu risques d'en chier avec un paramètre template de type référence :o

Reply

Marsh Posté le 23-09-2004 à 22:20:43    

ok :)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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