Forum » Programiranje » [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
Rad bi pa imel
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).
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.
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:
Sej če bi prej vedu da se temu reče conversion operator bi pogooglu sam nikjer nism najdu tega pod operatorji.
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.
Vesoljc ::
sej bom itaq reku da sem zanalasc zajebu, da vidim ce se znajdes
Abnormal behavior of abnormal brain makes me normal...
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C] MySQLOddelek: Programiranje | 2812 (1834) | Tutankhamun |
» | [c++] globalne spremenljivke (extern)Oddelek: Programiranje | 1580 (1453) | Vesoljc |
» | operator +Oddelek: Programiranje | 1271 (1144) | MasterBlaster |
» | [c++] stil kodiranja, informativnoOddelek: Programiranje | 1929 (1745) | CCfly |
» | Bubble sortOddelek: Programiranje | 1536 (1428) | OwcA |