Error przy próbie stworzenia tablicy elementów klasy.

0

Korzystam z cLion z ustawionym standardem c++17. Przy próbie kompilacji wyskakują mi następujące błędy:

C:...\Projekty.cpp(60): error C2131: wyraľenie nie zosta�o obliczone do sta�ej
C:...\Projekty.cpp(60): note: przyczynĄ niepowodzenia by� odczyt zmiennej poza jej okresem istnienia
C:...\Projekty.cpp(60): note: zobacz uľycie elementu "ilosc_proj"

Dotyczą klasy Projekt

class Projekt{
public:
    Projekt(int n, int p): nr(n), pracownicy(p), zaleznosci(0){}
private:
    int nr;
    int  pracownicy;
    int zaleznosci;
};

i następującego fragmentu kodu.

49)    int ilosc_proj = 0;
50)    int ilosc_zal = 0;
51)    int do_zrobienia = 0;
52)    int wczytane, a, b;
53)
54)    cin >> ilosc_proj;
55)    cin >> ilosc_zal;
56)    cin >> do_zrobienia;
57)
58)    ilosc_proj++;
59)
60)    Projekt tab_pro[ilosc_proj];

Gdyby program był w C to bym zrozumiała, bo tam tablica musi mieć rozmiar znany już przy kompilacji, ale w przypadku c++ nie musi tak być. Ktoś wyjaśni co robię nie tak?

2

Rozmiar tablicy musi być znany w czasie kompilacji i być stały dla tablic w C++. Właśnie w C, które wspiera VLA nie musi być.
W C++ jako tablicę o nieznanym rozmiarze w czasie kompilacji polecam std::vector.

0
YooSy napisał(a):

Rozmiar tablicy musi być znany w czasie kompilacji i być stały dla tablic w C++.

Nawet, gdy używamy tablic dynamicznych ?

1

C-tablica nie jest dynamiczna.

2

W C++ używaj raczej std::array (rozmiar stały) lub std::vector (używasz dynamicznie).

W C++ "C-tablice" nie są ani fajne, ani przyjemne. M.in.:

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