C++ operator overloading (g++)

Koodari

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?

5

1440

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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

    1. SDP on vastuunkantaja, ja siksi suosituin kansan keskuudessa

      Kiusaamiseenkin SDP puuttuu heti sellaisen tultua ilmi. Esimerkiksi persut lakaisevat nämä maton alle ja pahentavat site
      Maailman menoa
      194
      6610
    2. Punavihreät puolueet haluavat Suomeen satoja tuhansia kehitysmaalaisia

      SDP, vihreät ja vassarit haluavat nostaa esim. pakolaiskiintiötä todella paljon. Orpon hallituksen aikana maahanmuutto
      Maailman menoa
      106
      5503
    3. Nyt tuli Suomen somaleista todella ikävää faktaa

      sillä osa somalivanhemmista lähettää lapsiaan kotimaahansa kurinpitolaitoksiin, joissa heitä pahoinpidellään. Illan MOT
      Maailman menoa
      278
      3505
    4. Häirintäkohun keskellä olevalta kansanedustajalta Jani Kokolta (sd) rajua tekstiä somessa.

      https://www.is.fi/politiikka/art-2000011772322.html Ajaakohan tämä SDP:n kansanedustaja Jani Kokko oikein täysillä valoi
      Maailman menoa
      127
      3473
    5. Kähmijä puolueen kannatus romahtamassa

      Erityisesti naiset ovat suuttuneet SDP:lle kertoo asiantuntijat
      Maailman menoa
      99
      2481
    6. Kommentti: oikeuslaitos korvattava SDP:n johdolla

      Näkisin että Suomessa tuomiovalta pitäisi olla demareiden johtoportaalla. Koska porvarimedia säestettynä persujen kirku
      Maailman menoa
      3
      2155
    7. Läppärit kahviloissa

      Aika omituista nykyään, että mennään ”trendikkäästi” tekemään lämppärillä töitä kahviloihin ja viedään moneksi tunniksi
      Kahvilat
      54
      1927
    8. Sinä et halunnut sitoutua

      Samalla tavalla kyin minä ja koen vihdoinkin että se on ihan ok. Sitoutuminen merkitsi meille erilaisia asioita, eikä ne
      Ikävä
      19
      1926
    9. Persut pettävät ja valehtelevat aina

      Petoksistahan jää kiinni kuten olemme persujen kannatusromahduksesta nähneet, mutta siitä huolimatta persut jatkavat val
      Maailman menoa
      63
      1790
    10. Onko kaivattusi spesiaali?

      Millä tavalla ja miten?
      Ikävä
      101
      1459
    Aihe