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
1507
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
Kiky-maksuista valehtelu persujen törkein vaalipetos
Perusduunarina koen pahimmaksi persujen vaalipetokseksi "työmies" Putkosen lupaaman työntekijöiltä perittävien kiky-maks315308Haluat nainen torjua minut
Yhä uudelleen ja uudelleen. Huomaan sen. Ymmärrän miksi, mutta silti se sattuu. Eihän minulla ole muuta kuin haaveet si673964Miksei asevelvollisuuden kuluja lasketa Nato-menoihin?
Koskela (vas) kysyy aiheellisesti, että kun kerran palkka-armejaan perustuvat maat laskevat kysesestä toiminnasta aiheut313449Persuja tuntuu kiinnostavan vain muiden rahat
En muista kenenkään muun olleen huolissaan yhtä paljon muiden rahoista kuin persujen. Mistähän se kertoo?933231Onko Sdp:n romahdus pienpuolueeksi alkanut?
Mikään puolue ei kykene selviytymään loputtomasti, jos sitä repii jatkuvasti sisäiset ristiriidat ja kyvyttömyys päättää443188- 682641
Antti Lindtman heikko johtaja - ei valtiomiesainesta lainkaan
kyllä se eilen taas nähtiin. Ei pystynyt Antti vastaamaan edes toimittajan yhteen yksinkertaiseen kysymykseen - juu tai1242142En malta odottaa, että Lindtman pääsee suhmuroimaan pääministerinä
kun pitää sopeuttaa 10 miljardin edestä, ja eläkkeisiinkin voidaan puuttua Antin mielestä. (Demarien kannattajissa suuri542129Farmi Suomi: Kirsi Salo syyttää koulukiusaajiksi - Jucci Hellström lataa napakasti
Mitäs mieltä olet Kirsi Salon koulukiusaamiskommentista? Farmi Suomi -kisassa väki vähenee ja kisa kovenee. Peliliikkeit261377- 1801247