Forum » Programiranje » [c++] operatorji
[c++] operatorji
Tutankhamun ::
najprej moj bogi razred:
potem pa tkole v main:
kako nj nardim da bo stvar delovala, da lahko stevilko uvalim nek umes. A se to sploh da, al se to dela na ksn drgacn nacin?
Enkrat sm brov neki v eni knigi, pa je nimam več, zdej sm pa bogi.
class stevilka { int i; public: lala(int dfg) { i = dfg; } int GetNumber() { return i; } int operator + ( int l ) { return this->i + l; } int operator + ( lala &l ) { return this->i + l.GetNumber(); } };
potem pa tkole v main:
stevilka a(5); stevilka b(2); cout << a + b << endl; // use kul [:D] cout << a + 3 + b << endl; //to pa ni kul [:8)]
kako nj nardim da bo stvar delovala, da lahko stevilko uvalim nek umes. A se to sploh da, al se to dela na ksn drgacn nacin?
Enkrat sm brov neki v eni knigi, pa je nimam več, zdej sm pa bogi.
AMD Phenom QUAD 9950 Black Edition, 8GB
Gundolf ::
Kako je zdaj razredu ime, lala ali stevilka? ;)
Ne vem zakaj ti seštevanje vrača int, namesto objekta stevilka. Ponavadi kadar operiraš nad svojimi tipi, vračaš svoje tipe. Zakaj ti drugi primer ne dela? Preprosto. Rezultat prvega seštevanja je int, ti pa nimaš definiranega operatorja +(int, lala). Zato ti ne zna prevest.
operator+ (lala, int) ni isti kot operator+ (int, lala).
In te operatorje se ponavadi piše kot zunanje funkcije, ne kot memberje. Primer (izven tvojega razreda):
int operator+ (int a, lala& b) {...}
Ne vem zakaj ti seštevanje vrača int, namesto objekta stevilka. Ponavadi kadar operiraš nad svojimi tipi, vračaš svoje tipe. Zakaj ti drugi primer ne dela? Preprosto. Rezultat prvega seštevanja je int, ti pa nimaš definiranega operatorja +(int, lala). Zato ti ne zna prevest.
operator+ (lala, int) ni isti kot operator+ (int, lala).
In te operatorje se ponavadi piše kot zunanje funkcije, ne kot memberje. Primer (izven tvojega razreda):
int operator+ (int a, lala& b) {...}
Tutankhamun ::
upsi, ko sem sm pisu sm slabo popravu imena :P, se zgodi.
Bom pogledu kaj si to napisu, pa se vrnem s še kej uprašanji
Bom pogledu kaj si to napisu, pa se vrnem s še kej uprašanji
AMD Phenom QUAD 9950 Black Edition, 8GB
Tutankhamun ::
Jao mene se zmeri mi neki ne gre.
Js bi rad da bi imela s spremenljivka v C razredu vrednost "Tutan se neki matra". Se pa najprej kliče operator<< v C razredu, pol pa izpiše na zaslon samo "Tutan".
class C { public: string s; string operator<<(string str) { s += str; return s } }; string operator<<(string str1, string str2) { return str1 + str2; } int main() { C c; c.s =""; c << "Tutan " << "se " << "neki " << "matra"; printf("%s", c.s.c_str()); /*ne me kregat zarad te vrstice :)*/ return 1; }
Js bi rad da bi imela s spremenljivka v C razredu vrednost "Tutan se neki matra". Se pa najprej kliče operator<< v C razredu, pol pa izpiše na zaslon samo "Tutan".
AMD Phenom QUAD 9950 Black Edition, 8GB
Vesoljc ::
zakaj vracas string?
z operatorjem modificiraj vsebino, potem pa vrni "sebe", oziroma referenco nase:
z operatorjem modificiraj vsebino, potem pa vrni "sebe", oziroma referenco nase:
C &operator<<(const string &str) { s += str; return (*this); }
Abnormal behavior of abnormal brain makes me normal...
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | problem s programiranjem ulomkaOddelek: Programiranje | 1675 (1115) | KaRkY |
» | [C#] DeserializacijaOddelek: Programiranje | 1873 (1476) | Cvenemir |
» | C# je mozna referenca do int izven funkcije (direkt v classu torej)Oddelek: Programiranje | 1620 (1434) | TopCat |
» | [C/C++] Variadic MacrosOddelek: Programiranje | 2114 (1939) | OwcA |
» | Bubble sortOddelek: Programiranje | 1551 (1443) | OwcA |