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

1590

    Vastaukset 5

    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. Ne katseet, ei niitä

      Voi unohtaa. Se, miten molemmat katsoi
      Ikävä
      66
      1062
    2. Miten jotkut kehtaa aikuisiällä kiusata

      Ihmisiä? Eikö se ole aika noloa?
      Ikävä
      140
      849
    3. 71
      763
    4. Rydmanin lista lääkkeistä joista poistetaan Kela-korvaus julkisen potilailla

      Rydmanin lista lääkkeistä joista poistetaan Kela-korvaus julkisen potilailla (yksityisen asiakkaille Kela-korvaus jätetä
      Maailman menoa
      422
      714
    5. Onko kaivattusi seksipommi?

      Minun kaivattuni on😅😍
      Ikävä
      38
      658
    6. Mies miksi me ei voida aloittaa salaista suhdetta

      Pakkoko siitä olisi kenellekään kertoa? Voitaisiin nähdä salaa jossain eri paikkakunnalla.
      Ikävä
      72
      604
    7. Salassapito ja kunnan hommat

      Hyryllä alkanut olla ihmeellinen tapa että minä kuulen kunnan tapahtumista kylältä yhden henkilön toimesta. Tiedotusta h
      Hyrynsalmi
      13
      569
    8. Milloin mies aloitetaan

      Joku kiihkeä romanssi tai vakavampi suhde..? En jaksa enää olla yksin. Sä taidat haluta olla yksin.
      Ikävä
      37
      564
    9. En enää mies ikävöi sinua niin paljon

      Jos nyt vain pysyttelisit pois näköpiiristäni vielä kesän yli näiden useiden kuukausien jatkeeksi, niin luulen että kaik
      Ikävä
      55
      533
    10. Hyvää yötä kivalle miehelle!

      Samasta kylästä! 😊
      Ikävä
      94
      529
    Aihe