[ Buffy @ 15.03.2005. 17:05 ] @
Da li je moguce preklopiti operator [][](ako je ovo operator) tako da mogu napisati:
Code:

int main()
{
    KLASA a;
    a[5][3];
    return 0;
}

Pokusao sam to ovako uraditi:
Code:

int KLASA::operator[][](int a,int b)
{
    return a+b;
}

ili ovako:
Code:

int KLASA::operator[](int a,int b)
{
    return a+b;
}

...ali ne radi(kompajler prijavi gresku).
Mozda uopste nije moguce preklopiti operator [][],
prije svega zato sto to nije operator u cjelini,vec je ovdje samo
napisan dva puta operator [],ali mora postojati nacin da se ovaj problem rijesi!
Hvala unaprijed!
[ NeznamTkoSam @ 15.03.2005. 18:11 ] @
ne postoji operator [][]
fora je u tome što se zapravo:
a[10][3]
implementira kao:
(a[10])[3]
[ NeznamTkoSam @ 15.03.2005. 20:05 ] @
Napravimo Matricu cijelih brojeva.
Imamo klasu Matrica i klasu Stupac
u klasi Matrica preopteretis operator:
Stupac operator[](int index);
u klasi Stupac ponovno preoptereti operator:
int Stupac operator[](int index2);
sada mozes koristiti [][]:
Matrica *m = new Matrica...;
m[2]; // vraca objekt tipa Stupac
m[2][1]; // vraca cijeli broj, int
[ Buffy @ 15.03.2005. 20:49 ] @
...a moze takodje da preklopimo operator[](int index)
i da on vraca pointer.Na primjer:
Code:

KLASA a;
a[5]; //vraca pointer na pocetak nekog niza(na primjer niza int-ova)
a[5][7]; //vraca vrijednost 8. clana 6. niza

[ NeznamTkoSam @ 17.03.2005. 18:06 ] @
Da, mozes upotrijebiti klasu, pointer ili niz.