Przeciazenie operatora []

0

Czesc,
mam maly problem przy kompilacji programu. Nie mam pojecia czemu kompilator wywala mi ten blad :

map.cpp|40|error: cannot convert ‘vector’ to ‘thing*’ in assignment

oto wycinki kodu :

thing* vector::operator[](int index) {
    if(index>=tab_size) return NULL;
    return thing_tab[index];
}
void map::draw() {
    thing *help=NULL;
    for(int i=0;(things_vect[i])!=NULL;i++) {
        help=(things_vect[i]);
        help->show();
    }
}

Z gory dzieki za pomoc

0

Co to jest thing_tab? Zwykła tablica?
Daj więcej kodu. Skąd ten vector tam się wziął?

0

Vector to moja klasa, nie z biblioteki standardowej, robie maly projekcik hobbystyczny i pozwolilem sobie tak nazwac ta klase.
Moze dam cala deklaracje klasy vector :

class vector
{
    public:
    friend class thing;
        vector(int);
        ~vector();
        void sort(thing *[],int,int);
        void sort();
        void merge(thing *[],int,int,int);
        void binary_search(int,int,int,int) { } // to do
        void add(thing *);
        void remove(int);
        void remove(thing *);
        thing *operator[](int);
        bool operator!=(int);

    private:
    int tab_size;
    thing *(*thing_tab);
};
1

"cannot convert ‘vector’ to ‘thing*’ in assignment", czyli błąd jest gdzie indziej, np things_vect jest tablicą vectorów, albo wskaźnikiem na vector.

0
Endrju napisał(a)

O ile wszystko jest dobrze, to w tej pętli tyle powinno wystarczyć: things_vect[i]->draw();

Poza tym operator powinien przyjmować jakiś typ bez znaku (size_t).

Pierwotnie tak zrobilem i był podobny blad(wynikajacy z tego samego)

map.cpp|40|error: base operand of ‘->’ has non-pointer type ‘vector’

Zupelnie jakby ta funkcja nie zwracala wskaznika do klasy thing, dlatego tego zupelnie nie rozumiem.

0

O ile wszystko jest dobrze, to w tej pętli tyle powinno wystarczyć: things_vect[i]->draw();

Poza tym operator powinien przyjmować jakiś typ bez znaku (size_t).

1 użytkowników online, w tym zalogowanych: 0, gości: 1