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 expression
    

    Der 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. TECHNIK erfü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.


Anmelden zum Antworten