Scribit Guillaume Morin dies 28/04/2005 hora 23:26: > Tu dois retourner une *r�f�rence* sur ton Dice pas un nouvel objet. En > effet, tu vas cr�er des objets temporaires (un par appel a <<) qui > r�f�rencent le m�me vecteur.
Non, car ayant surd�fini l'op�rateur =, il n'y a pas de copie
superficielle. N�anmoins, merci de la remarque, c'est corrig�. Le
probl�me venait probablement du fait que mon constructeur de recopie ne
cr�ait pas le vecteur, en fait. C'est corrig�, et cette partie du code
fonctionne d�sormais, semble-t-il.
Par contre, je suis tomb� sur troisi�me bug dans mon code, et je suis
effar� que le compilo soit pass� outre�:
template<class T> Dice & operator =(const T &)
{
m_rollable_scalars->clear();
this->append(value);
return *this;
}
value aurait du �tre l'identifiant de l'argument, mais j'avais oubli�,
une fois que j'ai d�cid� d'en faire une fonction template d�finie dans
le fichier d'en-t�te, de le rajouter dans ce qui �tait le prototype.
C'est un bug dans GCC, ou c'est parce que c'�tait une fonction
template�?
> Si tu avais con�u ta classe correctement, tu aurais rep�rer le prb
> tout de suite. Les versions de l'op�rateur= et du constructeur par
> recopie g�n�r�s par le compilateur ne sont pas correctes pour l'objet
> Dice. Tu dois donc les �crire toi m�me si tu veux autoriser la copie
> d'objet Dice.
C'�tait d�j� fait.
Merci d'avoir pris le temps d'�tudier mon probl�me.
Finalement,
Nowhere man
--
[EMAIL PROTECTED]
OpenPGP 0xD9D50D8A
signature.asc
Description: Digital signature

