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

1522

    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. Sebastian Tynkkynen (pers.) ei vastusta raiskauksia

      "Sebastian Tynkkynen oli ainoa 14 suomalaismepistä, joka vastusti uutta suostumuksen puuttumiseen perustuvaa raiskauslak
      Maailman menoa
      109
      4565
    2. Purra jäi kiinni valehtelusta, Heinäluoma ei

      Ja heti alkoi Purra joukkoineen maalittamaan Heinäluomaa. Niin toimii äärioikeistoa edustava putinistipersulauma, jonka
      Maailman menoa
      65
      3392
    3. Oot kaunis

      Oot kaunis nainen.
      Ikävä
      85
      1161
    4. Alkuperäinen kristillinen kaste on uskoville annettava upotuskaste

      Kreikan sana BAPTIZO merkitsee upottamista. Alkuseurakunta kastoi upottamalla Apostolien tekojen kirjan mukaan: Ap.t 2
      Kaste
      552
      949
    5. Kuka murhasi Anneli Auerin miehen?

      Tapaus edelleenkin selvittämättä.
      Maailman menoa
      172
      845
    6. Me, Suomen kansa, vaadimme Riikka Purraa jatkamaan valtiovarainministerinä!

      Ja jollei valtiovarainministerinä, niin sitten pääministerinä. Purra on nostanut Suomen talouden nyt komeaan kasvuun Ma
      Maailman menoa
      84
      841
    7. Saisikin sinut

      Saisikin sinut nainen rakastajattareksi.
      Ikävä
      57
      799
    8. Pitäisikö naisen haluta "puolisomies"?

      Toivottavasti saan nyt tämän idean purettua hyvin sanoiksi? Mutta tuossa eräässä aloituksessa tuli vastaan tälläinen tek
      Sinkut
      142
      796
    9. Miksi piti uhota naapuri Venäjälle ja tehdä itsestä heidän vihollinen?

      https://www.iltalehti.fi/kotimaa/a/f0eee963-3605-47e6-9989-a21347ce7757 "Jos sota syttyy Suomessa, näin tapahtumat vois
      Maailman menoa
      195
      768
    10. Asiantuntijat todistavat: Rydman valehteli.

      Virta oli oikeassa jokaisessa kolmessa eri väitteessä, sen sijaan RYDMAN VALEHTELI kaikissa kolmessa väitteessä. https:/
      Maailman menoa
      189
      726
    Aihe