array mit int produziert Compiler Fehler



  • hallo zusammen,
    kann mir jemand erklären, wieso mein VC++ beim folgendem Code nen Fehler ausgibt?

    [code]
    //m_Range ist meine MemberVar von Typ int
    int  data_buffer[m_Range]; 
    int  *value_array[m_Range];
    
    for (int i=0; i== m_Range ;i++)
    {//}
    

    [/code]
    daraufhin bekomme ich

    error C2057: Konstanter Ausdruck erwartet
    error C2466: Reservierung eines Feldes der konstanten Groesse 0 nicht moeglich
    error C2133: 'data_buffer' : Unbekannte Groesse
    error C2057: Konstanter Ausdruck erwartet
    error C2466: Reservierung eines Feldes der konstanten Groesse 0 nicht moeglich
    error C2133: 'value_array' : Unbekannte Groesse

    vom Compiler zurück.
    kann es mir nicht erklären, selbst in MSDN steht ein Beispiel:

    char szPath[_MAX_PATH]; // Array of type char.
    char *pszPath = szPath; // Equals &szPath[0].
    

    die _MAX_PATH ist dort CONST , meine m_Range will ich aber dynamisch halten und daraus den Array erstellen.
    hab schon mit

    (const int) m_Range versucht
    

    😞
    hat jemand Idee?



  • Das geht nicht... Ein Array auf dem Stack muss zur Compile-Zeit eine bekannte Größe haben. Du brauchst eine dynamische Speicherverwaltung auf dem Heap.

    int *array = new int[size];
    ...
    delete array;
    

    Gruß



  • danke.
    ich dachte, der Weg über new.. delete läßt sich umgehen.
    So klappt aber einwandfrei
    😉



  • ➡

    delete[] array;
    


  • Ops jo stimmt natürlich 🙄

    Gruß



  • Hallo

    Du kannst new und delete vermeiden indem du std::vector benutzt.

    chrische


Anmelden zum Antworten