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. Muuttaisitko kaivattusi luokse

      heti asumaan? 🛒
      Ikävä
      100
      822
    2. Martinan tyttärestä hieno haastattelu IL

      Martina on kasvattanut fiksun tyttären.
      Kotimaiset julkkisjuorut
      361
      780
    3. Mä olen tosi

      Ylpeä sinusta 🫂 Ajatuksissani pyydän sulle paljon suojelusta ja varjelusta. Sinua rakastettaan ja susta välitetään. Mui
      Ikävä
      38
      589
    4. Samassa kylässä asuu yks mies...

      Jota en voi sietää... yök!
      Ikävä
      65
      575
    5. Mitä odotat kohtaamiselta?

      Niin, otsikossa kysymys.
      Ikävä
      71
      571
    6. Olet kuin minä

      Jännä huomata tämä kerta toisensa jälkeen eikö ❤️
      Ikävä
      47
      568
    7. Sanotaan se sitten tässä

      Rakastan sua mies varmaan.
      Ikävä
      30
      556
    8. En minä tule koskaan ottamaan sinuun yhteyttä

      Että siinä ole vaan rauhassa ilman minua koko loppuelämäsi ajan.
      Ikävä
      25
      530
    9. Omituiset kuntayhtymän vieraat festareilla

      Mitähän Pekka Iivari teki kuntayhtymän vieraana festareilla? Harvemmin tällaiset tilaisuudet ovat ns. avec- tyyppisiä ei
      Kemijärvi
      48
      527
    10. Jos se onkin niin

      Että me molemmat kaivataan toisiamme. Odotetaan sitä näkemistä. Ollaan mustasukkaisia ja mietitään, että kenen kanssa se
      Ikävä
      27
      522
    Aihe