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
1441
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
Lääppijä Lindtman jäi kiinni itse teosta
Lindtman kyselemättä ja epäasiallisesti koskettelee viestintäpäällikköä. https://www.is.fi/politiikka/art-20000117808521693877Huomaatteko Demari Tytti ei esitä pahoitteluitaan
Samanlainen ilmeisesti kuin Marin eli Uhriutuu no he ovat Demareita ja muiden yläpuolella siis omasta mielestään793080Turvaan tulleet lähettävät omia lapsiaan vaaraan - hullua
MOT-ohjelman jakso ”Loma vaihtui kahleisiin” kertoi, kuinka Suomessa ja muualla Euroopassa asuvat somaliperheet lähettäv462133Vedonlyöntiä .
Olen valmis lyömään ison vedon , että homma kaatuu . Jos kerta Sivonen ei lähde mukaan , niin ei tuoho usko kukaan muuka232023Mikä on pahinta, mitä kaivatullesi
pelkäät tapahtuvan? Jos kuolemaa, vakavia sairauksia yms. ei lasketa?491870TUNNISTELAATIKKO
Tähän ketjuun voi laittaa yhdellä tai kahdella lauseella (tai vaikka yhdellä sanalla) täydellisen tunnisteen, jonka vain851331Tykkäätkö enemmän tavis- vai julkkiskisaajista tv:ssä?
Tykkäätkö enemmän tavis- vai julkkiskisaajista tv:ssä? Moni reality ja visailuohjelma luottaa julkkiksiin, mutta sentään251268- 401260
Zoo jatkaa - jatkuuko mustamaalaus?
Tänään on päätetty Zoon avaamisesta uudelleen. Mielenkiintoista nähdä kautokurujen reaktio, nyt kun kyse ei ole kunnalli581048Valehdella saa, totuus salataan
Vaikuttaa vähän siltä, että sensuuria toteutetaan juorupalstallakin. Asioita saa kaunistella ja vääristellä, mutta totuu10758