Afficher un message
Vieux 30/04/2008, 14h14   #4
Mickaël Wolff
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Gestion de l'assignation consanguine

Sylvain SF a écrit :
> elle set impossible comme telle.
> B1 définit un operateur = avec B1& en paramètre, pas un A&


En fait si. En fait, B0:perator=(B0 const &) empêche la création
d'un operator= automatique. Un effet de bord est donc l'appel de
A:perator=(A const &) à l'affectation d'un A. C'est du moins le
comportement que j'observe avec gcc 4.3.0, et il ne me parait pas aberrant.

>> Lever une exception car c'est un non sens ? Et surtout, comment je le
>> détecte dans l'affectation ?

>
> si l'affectation est un non-sens, les operéateurs d'affectation
> devraient être privés pour éviter ces non-sens.


Effectivement, c'est une solution à envisager.

> si la perte signifie que l'instance sera caduque, interdissez les
> affectations; si les classes sont transposables (A = coordonnées,
> B0 = cartesiennes, B1 = polaires) offrez ces opérateurs et pourquoi
> pas un B0:perator= (B1 const&) (et vice-versa).


Merci pour ta réponse.

Je répondrai à James un peu plus tard, car sa réponse va me demander
un peu beaucoup de réflexions et d'essais avant de pouvoir apporter une
réponse pertinente.

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
  Réponse avec citation
 
Page generated in 0,04937 seconds with 9 queries