Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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.

10 réponses

1 2 3
Avatar
Gabriel Dos Reis
"Sylvain SF" writes:

| Marc Espie wrote on 11/05/2008 11:58:
| >
| > Donc a partir du moment ou ton code est publie(*), il *faut* le
| > documenter.
| > * note qu'en demandant de l'aide ici, c'est exactement ce que tu fais.
|
| tu me demanderais alors de raconter ma vie sur un point qui:

Et pourtant tu le fais tout le temps, ici et ailleurs.

-- Gaby
Avatar
espie
In article <48270f57$0$897$,
Sylvain SF wrote:
Marc Espie wrote on 11/05/2008 11:58:

Donc a partir du moment ou ton code est publie(*), il *faut* le
documenter.
* note qu'en demandant de l'aide ici, c'est exactement ce que tu fais.


tu me demanderais alors de raconter ma vie sur un point qui:
- n'est pas la source du problème,
- n'a rien à voir avec la question posée.

ce type de documentation ne me parait pas indispensable ici.


Dans mon boulot, j'essaie d'enseigner a des gens comment programmer
proprement, en particulier, comment eviter un serieux paquet de trous
de securite et de bugs divers et varies.

Un des concepts fondateurs que j'essaie de leur inculquer, c'est de
faire le plus simple possible, en particulier de suivre les regles
sauf raison extremement motivee.

Un deuxieme concept, c'est qu'un code evolue, est lu et modifie par
plusieurs personnes en general, et qu'une bonne dose des problemes
sont directement lies a des erreurs de communication entre personnes.

l'utilisateur devra donc lire leurs définitions, celle du >comme par exemple celle du post-incrément qui est également
void pour éviter le cout d'une copie.


... et s'en souvenir. Autant de details inutiles en tete qui occupent une
place precieuse, qui serait plus avantageusement prise par des choses
utiles.


La conclusion de ce que je raconte, c'est que 95% de ce qu'on ecrit
comme programmes sont des choses banales sans interet, qu'il convient
d'ecrire le plus simplement ET le plus rapidement possible, sans astuces
particulieres ni idiosyncrasies personnelles, histoire de pouvoir
reellement se concentrer sur les 5% qui restent.

Tu me suis mieux ?


Avatar
Sylvain SF
Marc Espie wrote on 11/05/2008 20:47:

Tu me suis mieux ?


non, je n'ai aucune raison de te suivre sur ce chemin.
évidemment cela ne s'oppose nullement aux évidences que tu énonces.

Sylvain.

Avatar
Sylvain SF
Gabriel Dos Reis wrote on 11/05/2008 19:59:
"Sylvain SF" writes:

| Marc Espie wrote on 11/05/2008 11:58:
| >
| > Donc a partir du moment ou ton code est publie(*), il *faut* le
| > documenter.
| > * note qu'en demandant de l'aide ici, c'est exactement ce que tu fais.
|
| tu me demanderais alors de raconter ma vie sur un point qui:

Et pourtant tu le fais tout le temps, ici et ailleurs.


"Ce groupe est dédié aux discussions autour du langage C++ uniquement".

<http://www.faqs.org/faqs/fr/chartes/comp.lang.cpp/>

Sylvain.

Avatar
Gabriel Dos Reis
"Sylvain SF" writes:

| Gabriel Dos Reis wrote on 11/05/2008 19:59:
| > "Sylvain SF" writes:
| >
| > | Marc Espie wrote on 11/05/2008 11:58:
| > | >
| > | > Donc a partir du moment ou ton code est publie(*), il *faut* le
| > | > documenter.
| > | > * note qu'en demandant de l'aide ici, c'est exactement ce que tu fa is.
| > |
| > | tu me demanderais alors de raconter ma vie sur un point qui:
| >
| > Et pourtant tu le fais tout le temps, ici et ailleurs.
|
| "Ce groupe est dédié aux discussions autour du langage C++ uniq uement".

Tu t'en rappelles lorsque tu n'as plus rien à raconter.

Bonne chance.

-- Gaby
Avatar
Sylvain SF
Gabriel Dos Reis wrote on 12/05/2008 12:15:
"Sylvain SF" writes:

| Gabriel Dos Reis wrote on 11/05/2008 19:59:
| > "Sylvain SF" writes:
| >
| > | tu me demanderais alors de raconter ma vie sur un point qui:
| >
| > Et pourtant tu le fais tout le temps, ici et ailleurs.
|
| "Ce groupe est dédié aux discussions autour du langage C++ uniquement".

Tu t'en rappelles lorsque tu n'as plus rien à raconter.


mais t'as vraiment rien d'autre à foutre mon pauvre gabriel ???

un expert comme toi, même peut être un adulte, jouer à touche-pipi
ou à mesurer des bites en guettant mes posts pour y verser ta petite
vanne, c'est vraiment pathétique.

je te rappelles que je suis une sous-merde, il y a déjà 20 ans,
j'étais traité d'idiot par un X dont je corrigeais les boucles
mal codées en Fortran ou d'affabulateur par un normalien dont
j'accélerais de 20% le code ("X operator# (const X&, const X&)"
à la place de "operator# (X, X)", # in {+,-,*,/,%, etc}), alors
tes vannes nulles d'"ici ou ailleurs" (puisque gaby est partout)
tu imagines bien que je suis trop médiocre pour les apprécier -
et s'il te plait arrêtes donc de te rabaisser en voulant montrer
que tu es plus précis, plus fin, plus pertinent qu'un pauvre tétard,
en un mot OUBLIE-MOI.

Sylvain.

Avatar
Gabriel Dos Reis
"Sylvain SF" writes:

| Gabriel Dos Reis wrote on 12/05/2008 12:15:
| > "Sylvain SF" writes:
| >
| > | Gabriel Dos Reis wrote on 11/05/2008 19:59:
| > | > "Sylvain SF" writes:
| > | >
| > | > | tu me demanderais alors de raconter ma vie sur un point qui:
| > | >
| > | > Et pourtant tu le fais tout le temps, ici et ailleurs.

[...]

| je te rappelles que je suis une sous-merde, il y a déjà 20 ans,

CQFD.

-- Gaby
Avatar
Sylvain SF
Gabriel Dos Reis wrote on 12/05/2008 18:32:
"Sylvain SF" writes:

| Gabriel Dos Reis wrote on 12/05/2008 12:15: | > "Sylvain SF"
writes: | > | > | Gabriel Dos Reis wrote on
11/05/2008 19:59: | > | > "Sylvain SF"
writes: | > | > | > | > | tu me demanderais alors de raconter ma vie
sur un point qui: | > | > | > | > Et pourtant tu le fais tout le
temps, ici et ailleurs.

mais t'as vraiment *rien* *d'autre* *à* *foutre* mon pauvre gabriel ???


CQFD.


pareil.


Avatar
digR
On 11 mai, 02:41, "Sylvain SF" wrote:
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.


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

Sté.

Avatar
Michael DOUBEZ
On 11 mai, 02:41, "Sylvain SF" wrote:
la classe Integer ne défini aucun operateur de cast implicite vers Bytes
Ta classe integer n'aurait-elle pas un opérateur de cast ?



Apparemment non.

(VC 12 compilait très bien ces expressions).



C'est ça qui est bizarre.
Est ce que tu compilais exactement le même source ?

Michael


1 2 3