» »

[C++]Operatorji

[C++]Operatorji

y00r3 ::

Mene pa zanima, kako bi naredu, da imam naprimer za parameter v neki funkciji GLuint, notr pa dam class CTexture, ki bi vrnil tisti GLuint. To ni problem če uporabim funkcijo, sam da bi compiler uzel GLuint če je to to kar rabi.
Ponavadi naredim
funkcija(Tex.GetID());

Rad bi pa imel

funkcija(Tex); //Učinek je isti kot Tex.GetID()

Vesoljc ::

kar tebe tukaj zanima je avtomatska pretvorba tipov (conversion operators). delujejo pa nekako tako kot ponudba in povprasevanje ;)
ce funkcija zahteva kot parameter spremenljivko tipa a in ce se spremenljivka, ki jo podajas v funkcijo zna pretvoriti v zahtevani tip, potem se to zgodi samodejno. v nasprotnem primeru moras sam zahtevati pretvobo (type casting).

class CId {
};

class CTexture {
private:
    // id
    CId             TextureId;
public:
    // operator
    const CId &     operator() { return TextureId; }
};

void Func(const CId & ObjectId)
{
  //
}

CTexture a;
Func(a);


do tukaj je vse lepo in prav, problemi pa se pojavijo, ko ima nek objekt vec moznosti za pretvorbo ter se prevajalnik ne more/zna odlociti katera pretvorba je prava.
Abnormal behavior of abnormal brain makes me normal...

y00r3 ::

Thx:))
Sam deklaracija je:
operator const CId & () { return TextureId; }

Sej če bi prej vedu da se temu reče conversion operator bi pogooglu sam nikjer nism najdu tega pod operatorji.:8)

Vesoljc ::

sej bom itaq reku da sem zanalasc zajebu, da vidim ce se znajdes 8-)
Abnormal behavior of abnormal brain makes me normal...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C] MySQL

Oddelek: Programiranje
292812 (1834) Tutankhamun
»

[c++] globalne spremenljivke (extern)

Oddelek: Programiranje
71580 (1453) Vesoljc
»

operator +

Oddelek: Programiranje
71271 (1144) MasterBlaster
»

[c++] stil kodiranja, informativno

Oddelek: Programiranje
171929 (1745) CCfly
»

Bubble sort

Oddelek: Programiranje
71536 (1428) OwcA

Več podobnih tem