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
1445
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
Selvästi näyttää siltä, että SDP:n kannattajat hyväksyy kiusaamisen
ja seksuaalisen ahdistelun, kun puolueen kannatus pysyy korkealla. Mitä tämä kertoo demari-äänestäjien moraalista?762802Kyllä nämä nyky autonakut ja autotki on heikloja
Vuoden vanha akku, eikä inahdakaan.... Pistin vara-akun just lataukseen ja lähen sillä antamaan apuvirtaa Jos ei toimi,282537Päivi Räsäsen seksipaljastus loksauttaa Katja Ståhlin leuat! Elämäni biisi kohujakso tv:ssä!
Elämäni biisi -suosikkisarjan uusinnat ovat startanneet ja nyt vuorossa on sarjan 2. jakso v. 2019. Sinisille sohville472291Muistan vuosikymmenten takaa
Toivottavasti voit hyvin ja jaksat työssäsi. Olet upea ja erinomainen ihminen, toivon kaikkea hyvää.122044Montako mitalia Suomi saa talviolympialaisista?
Nyt heittäkää veikkaus Suomen mitalisaldosta ja mistä lajeista metallilätkät tulevat. Oma veikkaukseni on 6 mitalia. -1101539- 1671393
- 521062
Kokemuksia Rehux Oy yrityksestä työpaikkana?
Jonkin aikaa seurannut kyseistä firmaa sivusta, näyttäisi, että tälläkin hetkellä olisi peräti 3 eri roolia tai paikkaa271055IS: Riitta Väisänen kärsii ikävästä vaivasta - Vaipparalli ja 40 antibioottikuuria takana...
71-vuotias Riitta Väisänen on kertonut tuoreista terveysongelmistaan. Väisänen on kertonut julkisuudessa jo aiemmin vaih15846Jos mies oikeasti haluaa sinut
Hän ei ota riskiä että menettäisi sinut. Ei pienintäkään. Mies ei jätä vastaamatta viesteihin eikä pidä sinua epätietois110824