Ongelma on tämä:
TOIMII: double foo = omatyyppi 3.1415;
TOIMII: double foo = 3.1415 static_cast(omatyyppi);
EI TOIMI: double foo = 3.1415 omatyyppi;
koe.c:18: error: ambiguous overload for 'operator '
Eli olen ylimääritellyt -operaation omatyypissä näin:
omatyyppi operator (double f) {...}
Ja lisäksi tyyppimunnosta doubleksi varten:
operator double() {...}
Onko mahdollista saada yhteenlasku toimimaan kuvatun kaltaisesti myös toisinpäin ilman erillistä tyyppimuunnosta? Ja miksei se nyt toimi vaikka tyyppimuunnosoperaattori on määritelty? g bugi?
C++ operator overloading (g++)
5
1585
Vastaukset
- akin.2
öh.. toi on kyllä jo jonkinnäköistä perversiota..
jos haluat että tuo operator toimii vikassa tapauksessa, sun pitäis määritellä 3.1415:lle (miksi lie se muutetaankaan käännön/ajon yhteydessä.. stakissa olevaksi float:ksi doubleksi.. mene ja tiedä..) operaattori .. tätä et pysty tekee.. vaihtoehto olis tehdä omatyyppiwrapperi luokka joka wrappaa tollasen 3.1415 litanian ja tarjoaa rajapinnan tollaselle laskennalle..
eg:
class Numero
{
public:
Numero( double aGiven ):iNumero(aGiven);
double operator ( omatyyppi aBlaa ) { return aBlaa->getNumber() iNumero; }
private:
double iNumero;
};
// en nyt muista miten operaattorin overloadaus meni.. en ole käyttänyt vuosiin, myös varmaan luokan tunkeminen templateksi olis pRo temppu..
tuolla saa wrapattua tylsästi:
double foo = Numero( 3.1415 ) omatyyppi;
/*
toki tapoja tehdä tämä on monia.. tämä vain yksi nopeasti hutastu idea.. Sorsa on myös samaa tasoa, kiljoona virhettä..
*/- qwerty12345
Luokan ulkopuolelle voi kyllä.
X operator (double const a, X const& b) {
X tulos;
return tulos;
} - Anonyymi
MENE HOITOON!
- Anonyymi
Täytyy määritellä myös operaattori double-tyypiltä omatyypille. Esimerkiksi:
omatyyppi operator +(double f) { ... }
Tämä mahdollistaa yhteenlaskun, jossa double-tyyppinen arvo lisätään omatyypin arvoon.
Virheilmoitus "ambiguous overload for 'operator '" tarkoittaa, että kääntäjä ei pysty päättämään, kumpaa operaattorifunktiota se tulisi käyttää, koska operaattoria on ylikuormitettu useammalla kuin yhdellä tavalla. Tässä tapauksessa sinun täytyy määritellä selkeämmin, miten haluat kääntäjän valitsevan operaattorin. Lisäksi varmista, että olet määritellyt kaikki tarvittavat operaattorit ja tyyppimuunnokset oikein. - Anonyymi
Vaikuttaa että operaation operandien ja operaattorien käsitteet ovat nyt sekasin.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Jussi Halla-aho huolissaan Sofia Virrasta
Jussihan on vanha vihreä. Onko tässä kyse alkukesän kiimasta, kun aidan toisella puolella oleva vihreä alkaa kiinnostama907532Sofia Virta kadonnut....onko juomassa?
Virran poissaolo eduskunnasta on herättänyt huomiota. Esimerkiksi Ilta-Sanomat kertoi aiemmin, että Virta on ollut tällä1216268Julkista rahaa ei tule antaa senttiäkään yksityisille yrityksille
Julkinen raha on meidän yhteistä rahaa, ja se raha on tarkoitettu yhteiseen käyttöön, kuten esimerkiksi tuottamaan palve1604387Tytti Tuppurainen: Suomen pakolaiskiintiö pitäisi nostaa 10 000 vuodessa
asia on faktaa, noin Tytti sanoi aiemmin. Kun taas Orpon hallitusohjelman mukaisesti Suomen pakolaiskiintiö on pudotettu2333034Halla-aho sivaltaa edustajantyöstään lintsaavaa Sofia Virtaa
https://www.iltalehti.fi/politiikka/a/937c74d7-f905-4466-b9b4-abd017fe5b63 Kansanedustajan on ilmoitettava poissaolosta902618Ruotsissa uusi monikulttuurisuusongelma: Mummonraiskuut
Ilmiö räjähti käsiin ja nyt painetaan paniikkinappulaa. Moni vanhustenhoivayhtiö on joutunut jopa lopettamaan, koska keh241856Yhteydenotto
Tiedätkö tai ymmärrätkö syyn, miksi kaivattusi ei ota sinuun yhteyttä? Mikä se syy on?1891470- 1231460
Minkä arvosanan 4-10 annat Susanna Laineelle Farmi-juontohommista?
Minkä arvosanan 4-10 annat Suskille? Tätä ei tv:ssä: Susanna Laine paljastaa, mikä yksi asia hermostuttaa Farmi-kuvauk21751"Suomen Gossip Girl" Jannica Nordberg voitti Farmi Suomen
Onnea, Jannica! Jannica Nordberg voitti Farmi Suomen ja 30 000 euroa. Nordberg kutsuu itseään Suomen Gossip Girliksi19693