[méchanceté_gratuite] je te lance la première pierre ! [/méchanceté_gratuite]
Bon sinon, euh, je viens de vérifier tes allégations douteuses cher ami Nithril. Et quelle ne fut pas ma suprise quand j’ai vu que… ben chez moi ton code (corrigé hein, parce que bon il compile pas tel quel) fonctionne comme tu t’attends à ce qu’il fonctionne.
Voici le code exact tel que je l’ai utilisé :
class CObject
{
public:
CObject(int a = 0) {_a=a;}
CObject(CObject&obj)
{
*this = obj;
}
CObject& operator=(CObject &obj) //fct 1
{
_a = obj._a;
return *this;
}
void operator=(int a) //fct 2
{
_a = a;
}
operator int() //fct 3
{
return _a;
}
int _a;
};
CObject GetObj()
{
return CObject(10);
}
Et voila le code assembleur généré par Visual Studio .NET 2002 (en Debug, parce que bon, en Release ce brave Visual me le remplace grosso modo par un "mov eax, 0x0A"... ce qui est tout a fait ce que fait le code au dessus, au final
![]()
) :
CObject a; //<-- Déclaraction de A, bon ça appelle le
0042562E push 0 // constructeur avec 0, logique jusque la.
00425630 lea ecx,[a]
00425633 call CObject::CObject (4255F0h)
a = GetObj(); //<-- Appel à la fonction GetObj() (ben oui)
00425638 lea eax,[ebp-8E4h]
0042563E push eax
0042563F call GetObj (4255D0h)
00425644 add esp,4
00425647 push eax <-- On récupére la valeur de retour,
00425648 lea ecx,[a] pushée sur la pile, "&a" dans ecx
0042564B call CObject::operator= (426300h)
Et enfin, appel de l'opérateur "=".
(Petite note au passage : pour ceux qui savent pas, en C++ "this" est un "paramètre caché" des méthodes non statiques d'un objet.)
Bref, tout ça pour dire que je m’étonne que tu ai le problème en fait. Soit mon compilo a trop bu, soit euh ben c’est moi qui ait trop bu. Mais ça c’est pas possible, je le saurais.
Et pour finir tiens : je jette une pierre à GloP avant que notre c0unt0 local ne l’égore pour avoir écrit « Count0 » au lieu de « c0unt0 »
Et aussi pour avoir écrit « stp » tiens. Que vient faire la Société des Transports Poitevins dans un thread sur le code, je n’ai toujours pas compris. ![]()
(oui bon, la on pourrait croire que je cherche les emmerdes, donc je précise : JE RIGOOOOLEUH ! PATAPER !) ![]()
[EDIT] pour reformater mon texte parce que bon entre ce qu’on prévisu et ce qu’il y a au final y’a une légère différence, qui fait toute la différence justement ![]()
Ce message a été édité par tuo le 04/12/2003