Konstante im Arry.
-
Hallo ich habe eine globale include datei wo einige konstanten definiert werden :
// Konstanten const int MIN = 0; const int MAX = 1; const float PUNKTE[2] = {0.0, 99.99}; const int AUFSCHLAG[2] = {0,2}; const int ANNAHME[2] = {AUFSCHLAG[MAX] + 1,ANNAHME[MIN] - 1 + 3}; const int PASS[2] = {ANNAHME[MAX] + 1,PASS[MIN] - 1 + 11}; const int ANGRIFF[2] = {PASS[MAX] + 1,ANGRIFF[MIN] - 1 + 11}; const int BLOCK[2] = {ANGRIFF[MAX] + 1,BLOCK[MIN] -1 + 3}; const int TECHNIK = 27; const int TAKTIK[2] = {0,2}; const int FITNESS[2] = {0,8};Und in der Klasse verwende ich das :
#include "GlobalInclude.h" #include "Person.h" class Spieler : public Person { public: Spieler(string name, string vorname, int alter, float min, float max) : Person (name, vorname, alter) { if (min > max) swap(min,max); // Definiere das Technik Array for (int i = 0; i < TECHNIK; i++) aTechnik[i] = min + rand() % static_cast<int>(max - min); // Definiere das Taktik Array for (i = 0; i < TAKTIK; i++) aTaktik[i] = min + rand() % static_cast<int>(max - min); // Definiere das Fitness Array for (i = 0; i < FITNESS; i++) aFitness[i] = min + rand() % static_cast<int>(max - min); } ~Spieler(); float GetAufschlag(int min, int max); float GetAnnahme(int min, int max); float GetPass(int min, int max); float GetAngriff(int min, int max); float GetBlock(int min, int max); float GetTaktik(int min, int max); float GetFitness(int min, int max); Result SetAufschlag(int min, int max, float aufschlag); Result SetAnnahme(int min, int max, float annahme); Result SetPass(int min, int max, float pass); Result SetAngriff(int min, int max, float angriff); Result SetBlock(int min, int max, float block); Result SetTaktik(int min, int max, float taktik); Result SetFitness(int min, int max, float fitnes); private: float aTechnik[TECHNIK]; float aTaktik[TAKTIK[MAX]]; float aFitness[FITNESS[MAX]]; };Beim Kompilieren kommt folgender Fehler :
error C2057: expected constant expressionDer Fehler bezieht sich auf die 3 Array , aTechnik , aTaktik, aFitness
Kann mir jemand einen Tipp geben ?
-
Arrays in denen du konstante speicherst müssen ebenfalls konstant sein.
-
Arraygrössen müssen konstante Ausdrücke sein, d.h. zur Compilezeit feststehende Konstanten.
TECHNIKerfüllt diese Bedingung. Array-Elemente (TAKTIK,FITNESS) sind jedoch nie konstante Ausdrücke.Du hast folgende Möglichkeiten: Entweder entsprechende Konstanten einrichten, oder den Speicher dynamisch verwalten (z.B. mit
std::vector). Falls du dich mit der STL noch nicht auskennst, kannst du dich hier einlesen.