Rozszerzanie tablicy dynamicznie

0

Chcę napisać funkcję, która będzie automatycznie rozszerzać wielkość tablic obiektu. Dopiero uczę się pisać w C++, dlatego nie wiem co oznacza wyrzucany przez kompilator błąd

 request for member 'tabX' in 'newtab', which is of non-class type 'Tabela*'

Czy ktoś mógłby mi wyjaśnić co jest źle i jak to ew. naprawić?

Funkcja wygląda tak:

Tabela* Tabela::increase_tab(int old_size, Tabela *old_tab)
{
    Tabela *new_tab = new Tabela(old_size+10); //bufor, by nie wywołuwać tej funkcji za często
    total_size=old_size+5;
    for (int i = 0; i < old_size; i++)
    {
        new_tab.tabX[i] = old_tab.tabX[i];
        new_tab.tabY[i] = old_tab.tabY[i];
    }

    delete []old_tab;

    return new_tab;
}

Tutaj jeszcze konstruktor:

 Tabela::Tabela(int size=10)
{
    tabX=new float[size];
    tabY=new float[size];
    total_size=size;
    current=0;
}
0

jak chcesz się odnieść do obiektu pokazywanego przez wskaźnik to musisz użyć operatora "->"(bez cudzysłowie) a nie operatora "." bo on odnosi się do referencji albo do obiektu
zamiast old_tab.tabX[i] powinieneś napisać old_tab->tabX[i]. W reszcie przypadków musisz postąpić podobnie. Zauważ że new_tab i old_tab to są wskaźniki a nie zwykłe obiekty. Gdyby old_tab i new_tab były zwykłymi obiektami to ten twój zapis byłby prawidłowy.

0

tak jak napisal @robcio. Jeszcze polecam poczytać coś o kontenerach (przede wszystkim o vectorze) i jeżeli się da to zaprzestać z używania tablic (chyba że na prawdę są one potrzebne i inaczej się nie da)

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