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

Attachment: signature.asc
Description: Digital signature

Répondre à