Rozszerzanie tablicy dynamicznie

Rozszerzanie tablicy dynamicznie
QK
  • Rejestracja: dni
  • Ostatnio: dni
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

Kopiuj
 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:

Kopiuj
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:

Kopiuj
 Tabela::Tabela(int size=10)
{
    tabX=new float[size];
    tabY=new float[size];
    total_size=size;
    current=0;
}
robcio
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Opole
  • Postów: 533
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.

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
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)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.