Mistä löytäisin tietoa wrappereiden käytöstä c++ kielessä kun en ole törmännyt javassa kyllä?
Mitähän ihmettä tarkoitat? Itse en ainakaan tiedä, että siihen mitään erityistä tietoa tarvittaisiin. Onko jokin erityinen kirjasto, jolle tarvitsisit jonkinlaisen C++-wrapperin? Mikä estää käyttämästä kirjastoa ilman wrapperia, ts. mitä wrapperin pitäisi tehdä?
Puhdas veikkaukseni on että kysyjä tarkoittaa, että onko C++:assa javassa käytettyjen perustietotyyppien kääreluokkien vastineita.
int -> Integer
long -> Long
jne.
Oma käsitykseni on, että ei ole C++ standardi kirjastossa.
Mutta oikaiskaa ihmeessä jos olen väärässä.
#define Integer int; //etc??
vehkis91, mietipä vähän. Ei tuo siitä mitään luokkaa tee. Sitä paitsi puolipisteen ansiosta määrittelemäsi Integer on käyttökelvoton:
Integer x; int; x; // Syntaksivirhe.
Jos nyt noista on kyse, niin helppohan niitä on tehdä.
class Integer { int x; public: Integer(int _x = 0): x(_x) {} operator int () const { return x; } Integer operator + (Integer const& t) const { return Integer(x + t.x); } Integer operator * (Integer const& t) const { return Integer(x * t.x); } };
Hieman lisähaastetta hommaan saa, kun tekee malleilla niihin SI-järjestelmän yksikkötarkistuksen. ;)
Toisin kuin Javassa C++:ssa int, float, char jne. ovat luokkia!
Voit siis luoda luokasta int olion kuten mistä tahansa muustakin luokasta, etkä näin ollen tarvitse Java-tyylistä Integer-luokkaa.
int *olio = new int();
Vastaava lause ei siis toimi Javassa ja tämän takia siinä tarvitaan Integer-luokkaa.
Perustietotyypit eivät ole luokkia. Luokka on tyyppi, joka on määritelty sanalla struct, class tai union.
Javan ja C++:n ero on siinä, että Javassa kaikki ei-perustietotyyppiä olevat muuttujat ovat automaattisesti osoittimia (Javan termistöllä viittauksia), joten luokat ja perustietotyypit toimivat eri tavalla. C++ sisältää erilliset osoittimet, joten luokkia ja perustietotyyppejä voi käyttää samalla tavalla. Luokan ilmentymä on aivan samanlainen olio riippumatta siitä, onko se luotu new-operaattorilla vai automaattisesti; ero on elinajassa. Java ei vain anna tätä valintaa ohjelmoijan tehtäväksi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.