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
1525
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
Omakotitalossa väkivaltaa ounasrinteellä
Kertoo iltalehdet Mitä lienee Tapahtui. Verinen ihminen kannettu lanssiin111288Martinan hevoset.
Tämä todella kaunis ja ketterä harmaa hevonen jolla monet kilpailut voitetaan ei ole Martinan.Tytär ratsastaa sillä tait3061190Persut jakavat tekoälyllä tehtyjä kuvia maahanmuuttajista somessa
Eivät mainitse, että ovat tekoälyllä tehtyjä. Eivät näe asiassa mitään ongelmaa. Valehtelijapuolue taas vauhdissa. Unka3801137Ethän leiki kanssani J- mies
Jos oletkin joku pelimies, jolla monia vaihtoehtoja, katkon kylmästi yhteyden. En jaksa sellaisia miehiä.96818Miesmäinen vanha nainen joka kulkee lastenvaunujen kanssa
Mikähän kaheli tämä yks kaupungilla karvahattu päässä kulukeva vanha eukko on joka työntää lastenvaunuja. Onhan sitte13751Molemmat päät
aivan tulessa😫 Miksi pitää ihmisen tällaisesta kärsiä??? Jos koko ajan pnettaa, niin miksi sitä seksiä ei voi sitten s113750- 34692
Kasteen merkityksestä ihmiselle
Jeesuksen hyvä ystävä Nikodemus meni heti Jeesuksen kasteen jälkeen kysymään häneltä kasteen merkityksestä ihmiselle. J371690Liikenne onnettomuus
Luin juuri Ampparista Konneveden kauheasta onnettomuudesta jossa menehtyi 60-luvulla syntynyt mies. Onko kellään tarkemp6670kukaan ei pakota kasteeseen..
Kommentointi estetty, joten kommentoin tähän.Kukaan ei pakota pakkokasteesta puhuvaa kastamaan lastansa.Noloa edes ehdot222661