» »

[c++] operatorji

[c++] operatorji

Tutankhamun ::

najprej moj bogi razred:
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) {...}

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 :D
AMD Phenom QUAD 9950 Black Edition, 8GB

Vesoljc ::

Abnormal behavior of abnormal brain makes me normal...

Tutankhamun ::

Jao mene se zmeri mi neki ne gre.

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&#60&#60 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:
    C &operator<<(const string &str)
    {
        s += str;
        return (*this);
    }
Abnormal behavior of abnormal brain makes me normal...

Vesoljc ::

Abnormal behavior of abnormal brain makes me normal...


Vredno ogleda ...

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

problem s programiranjem ulomka

Oddelek: Programiranje
191675 (1115) KaRkY
»

[C#] Deserializacija

Oddelek: Programiranje
181873 (1476) Cvenemir
»

C# je mozna referenca do int izven funkcije (direkt v classu torej)

Oddelek: Programiranje
81620 (1434) TopCat
»

[C/C++] Variadic Macros

Oddelek: Programiranje
122114 (1939) OwcA
»

Bubble sort

Oddelek: Programiranje
71551 (1443) OwcA

Več podobnih tem