OVH Cloud OVH Cloud

operateur =() MS VC

21 réponses
Avatar
Sylvain SF
VC 14 est idiot ou c'est moi ??

dans une classe Integer, j'ai:

void operator= (long);
void operator= (const Integer&);
void operator= (const Bytes&);
void operator= (const char*);

où "Bytes" est une classe définissant un byte-array.

pour des déclarations telles:

Integer a; // membre d'une classe

const Integer* n = ....... // expression déduite
a = *n; // ERROR

ou encore

Integer m = ..... // expression calculée
a = m; // ERROR

sur les 2 affect. de 'a' le compilo sort une erreur "operateur ambigu"
ne savant pas choisir entre =(const Integer&) et =(const Bytes&).
(pourquoi pas les 2 autres ?...)

la classe Integer ne défini aucun operateur de cast implicite vers Bytes

j'ai du mal à saisir ce qui l'empêche de voir qu'un Integer const est
un Integer const ! y'a une logique ... ou un bug ?
(VC 12 compilait très bien ces expressions).

Sylvain.

1 réponse

1 2 3
Avatar
Sylvain SF
digR wrote on 13/05/2008 16:05:

dans une classe Integer, [...]


Ta classe integer n'aurait-elle pas un opérateur de cast ?


le fil n'est pas spontanément facile à lire; le problème était réglé
avec mon second post (11/05 @ 03:17); les 16 posts suivants sont du
bruit sans aucun intérêt - des admirateurs qui s'emmerdent ...

la classe Integer n'a pas de cast vers Bytes, mais l'affectation en
erreur n'impliquait pas un Integer mais un ASN1Integer (erreur de
lecture de mon code) qui lui possédait un cast fautif.

en effet Michael, le source avait changé depuis la compil. par cl.12
avec cet operator utilisé pour un test ou immédiatement oublié.

Sylvain.


1 2 3