beim Wechsel zu MFC plötzlich Array-Errors :-(



  • Guten Abend,
    endlich habe ich einen Bildanalyse-Header eingebunden bekommen, nun lässt sich mein aktuelles Programm aber nicht mehr kompilieren 😞

    Unter Dev C++ war es noch errorfrei...
    Würde mich riesig freuen, wenn einer mal drüber schauen könnte und mir sagt, wieso ich die Arrays falsch initiere 🙂

    Viele vielen Dank schonmal!!!

    Die Errors lauten:

    ------ Erstellen gestartet: Projekt: Programmiert Visual C++, Konfiguration: Debug Win32 ------
    main.cpp
    d:\programmiert\main.cpp(26): error C2057: Konstanter Ausdruck erwartet
    d:\programmiert\main.cpp(26): error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
    d:\programmiert\main.cpp(26): error C2057: Konstanter Ausdruck erwartet
    d:\programmiert\main.cpp(26): error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
    d:\programmiert\main.cpp(26): error C2087: 'H': Feldindex fehlt
    d:\programmiert\main.cpp(26): error C2133: 'H': Unbekannte Größe
    d:\programmiert\main.cpp(27): error C2057: Konstanter Ausdruck erwartet
    d:\programmiert\main.cpp(27): error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
    d:\programmiert\main.cpp(27): error C2057: Konstanter Ausdruck erwartet
    d:\programmiert\main.cpp(27): error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
    d:\programmiert\main.cpp(27): error C2087: 'S': Feldindex fehlt
    d:\programmiert\main.cpp(27): error C2133: 'S': Unbekannte Größe
    d:\programmiert\main.cpp(28): error C2057: Konstanter Ausdruck erwartet
    d:\programmiert\main.cpp(28): error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
    d:\programmiert\main.cpp(28): error C2057: Konstanter Ausdruck erwartet
    d:\programmiert\main.cpp(28): error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
    d:\programmiert\main.cpp(28): error C2087: 'V': Feldindex fehlt
    d:\programmiert\main.cpp(28): error C2133: 'V': Unbekannte Größe
    d:\programmiert\main.cpp(93): error C2057: Konstanter Ausdruck erwartet
    d:\programmiert\main.cpp(93): error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
    d:\programmiert\main.cpp(93): error C2057: Konstanter Ausdruck erwartet
    d:\programmiert\main.cpp(93): error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
    d:\programmiert\main.cpp(93): error C2087: 'Hs': Feldindex fehlt
    d:\programmiert\main.cpp(93): error C2133: 'Hs': Unbekannte Größe
    d:\programmiert\main.cpp(93): error C2057: Konstanter Ausdruck erwartet
    d:\programmiert\main.cpp(93): error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
    d:\programmiert\main.cpp(93): error C2057: Konstanter Ausdruck erwartet
    d:\programmiert\main.cpp(93): error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
    d:\programmiert\main.cpp(93): error C2087: 'Ss': Feldindex fehlt
    d:\programmiert\main.cpp(93): error C2133: 'Ss': Unbekannte Größe
    d:\programmiert\main.cpp(93): error C2057: Konstanter Ausdruck erwartet
    d:\programmiert\main.cpp(93): error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
    d:\programmiert\main.cpp(93): error C2057: Konstanter Ausdruck erwartet
    d:\programmiert\main.cpp(93): error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
    d:\programmiert\main.cpp(93): error C2087: 'Vs': Feldindex fehlt
    d:\programmiert\main.cpp(93): error C2133: 'Vs': Unbekannte Größe
    d:\programmiert\main.cpp(132): error C2057: Konstanter Ausdruck erwartet
    d:\programmiert\main.cpp(132): error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
    d:\programmiert\main.cpp(132): error C2057: Konstanter Ausdruck erwartet
    d:\programmiert\main.cpp(132): error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
    d:\programmiert\main.cpp(132): error C2087: 'Hm': Feldindex fehlt
    d:\programmiert\main.cpp(132): error C2133: 'Hm': Unbekannte Größe
    d:\programmiert\main.cpp(133): error C2057: Konstanter Ausdruck erwartet
    d:\programmiert\main.cpp(133): error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
    d:\programmiert\main.cpp(133): error C2057: Konstanter Ausdruck erwartet
    d:\programmiert\main.cpp(133): error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
    d:\programmiert\main.cpp(133): error C2087: 'Sm': Feldindex fehlt
    d:\programmiert\main.cpp(133): error C2133: 'Sm': Unbekannte Größe
    d:\programmiert\main.cpp(134): error C2057: Konstanter Ausdruck erwartet
    d:\programmiert\main.cpp(134): error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
    d:\programmiert\main.cpp(134): error C2057: Konstanter Ausdruck erwartet
    d:\programmiert\main.cpp(134): error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
    d:\programmiert\main.cpp(134): error C2087: 'Vm': Feldindex fehlt
    d:\programmiert\main.cpp(134): error C2133: 'Vm': Unbekannte Größe
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========



  • VLA's (Array-Grenzen durch eine Variable festgelegt) sind ein Feature in C99, das es nicht nach C++ geschafft hat. Das heißt, hier mußt du die Array-Größe durch eine Konstante vorgeben.

    PS: sfds



  • Habe ich die Grenzen mit ymax und xmax nicht deklariert?



  • Grunert schrieb:

    Habe ich die Grenzen mit ymax und xmax nicht deklariert?

    Doch, aber wie dir schon die erste Fehlermeldung sagt, ist es keine Konstante.



  • Hmmm bin immernoch nicht schlauer 😃
    Würde mich über eine etwas konkretere Hilfestellung freuen.
    (bin Ingenieur und die haben es nicht so mit Programmieren ^^)
    Was muss ich in was abändern???

    Solange schaue ich mir mal das

    Syntaxcoloring

    an 😉



  • OK, etwas ausführlicher: Wenn du die Definition int H[xmax][ymax]; hast, will der Compiler an dieser Stelle wissen, wie groß xmax und ymax sind. In deinem Programm sind das aber Variablen, deren Größe erst zur Laufzeit bekannt sind (also etwas zu spät für den Compiler).
    Erlaubt sind an der Stelle nur Konstanten (ala const int xmax = 800; ), Ganzzahl-Literale (z.B. 800) oder einfache Berechnungen damit. (zur Not auch noch Präprozessor-Makros)

    PS: Übrigens ist es keine gute Idee, den globalen Variablen die selben Bezeichnungen zu geben wie den Funktions-Parametern.



  • ok ich hatte es mit "const xmax=800;" versucht 😃
    Nachdem ich nun alle Felder klar vorher definiert habe, geht es.
    (alle xmax und ymax durch 800 und 600 ersetzt)

    Aber das kann ja wohl nicht sein, dass sich Felder nicht dynamisch erzeugen lassen?!?!

    Naja soweit so gut, morgen nochmal alles durcharbeiten und dann schauen, wie ich Bilder einlese, die Auflösung auslese....

    Gute Nacht
    Grunert



  • Grunert schrieb:

    Aber das kann ja wohl nicht sein, dass sich Felder nicht dynamisch erzeugen lassen?!?!

    Klar geht das, allerdings nicht auf dem Stack - dazu kannst du einen std::vector<> verwenden. (oder wenn du dich gut damit auskennst, auch new/delete)


Anmelden zum Antworten