Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem s operatorom []

[es] :: C/C++ programiranje :: C/C++ za početnike :: Problem s operatorom []

[ Pregleda: 2096 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

itf
Zagreb

Član broj: 59794
Poruke: 993
*.adsl.net.t-com.hr.



+9 Profil

icon Problem s operatorom []21.08.2008. u 12:56 - pre 189 meseci
Naletio sam na mali problem pri pisanju predloška klase:

Code:
#include <iostream.h>

template <class T>
class Polje
{
    public:
        T* polje;

        Polje(int n){
            polje = new T[n];
        }
        ~Polje() {delete[] polje;}
        T operator [](int indeks){
            return polje[indeks];
        }
};
int main(int argc, char* argv[])
{
    Polje <int> A(10);

    for(int i = 0; i < 10; i++)
        A.polje[i] = i;

    cout << A[5];  // vraća A.polje[5]
    A[5] = 10; // greška!
    return 0;
}


Stvar je u tome što želim implementirati operator [] na način da se preko njega može adresirati polje unutar predloška, i to PRILIKOM INICIJALIZACIJE neke vrijednosti tj. pri upotrebi operatora =. Kao što vidite, implementacija radi kada treba vratiti vrijednost nekog elementa u polju na nekom indeksu, ali kada tom istom elementu polja želim dodati vrijednost onda ne radi.

Iskreno, ne znam kako da implementiram operator pridruživanja za ovaj slučaj...
 
Odgovor na temu

xeron
Sarajevo

Član broj: 25909
Poruke: 133
*.PPPoE-6461.sa.bih.net.ba.



Profil

icon Re: Problem s operatorom []21.08.2008. u 15:16 - pre 189 meseci
Evo stavio sam neke ispravke sa komentarima, pa javi je li sada ok.
Code:

#include <iostream>
using namespace std;

template <class T>
class Polje
{
    public:
        T* polje;

        Polje(int n){
            polje = new T[n];
        }
        ~Polje() {delete[] polje;}

        // subscript operator za nekonstantne objekte
    // vraca lvalue koja se moze modificirati
        T &operator [] (int indeks){
            return polje[indeks];
        }
    
    // subscript operator za const ... rvalue
    T operator [] (int index) const{
        return polje [index];
    }

};
int main(int argc, char* argv[])
{
    Polje <int> A(10);

    for(int i = 0; i < 10; i++)
        A.polje[i] = i;

    cout << "Vrijednost A[5] :"<< A[5] << endl;      // vraća A.polje[5]
    A[5] = 10;                         // dodjela je sada ok
    cout <<"Vrijednost A[5] nakon dodjele: "<< A[5] << endl;
    return 0;



Citat:

./subscript
Vrijednost A[5] :5
Vrijednost A[5] nakon dodjele: 10

if (argc > 1 && strcmp(argv[1], "-advice") == 0) {
printf("Don't Panic!n");
exit(42);
}
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Problem s operatorom []

[ Pregleda: 2096 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.