Mehrdimensionales Array in C++ Klasse initialisieren



  • Hallo allerseits

    Ich habe folgendes Problem und zwar arbeite ich mit Klassen. Dabei habe ich ein mehrdimensionales array namens Feld welches 9 x 9 groß ist. Nur wie initialisiere ich es richtig vor also mit 0?
    So sieht meine Klasse bis jetzt aus:

    
    class Auswertung
    {
    private:
    	//Daten der Klasse Auswertung
    	int Feld[9][9];
    	string title;
    
    public:
    	//Deklaration der Konstruktoren
    	Auswertung();
    	Auswertung(string);
    	 ~Auswertung();
    
    

    Und hier werden die Funktionen mit Leben gefüllt

    
    Auswertung::Auswertung()
    {
    	Feld[9][9] = 0;
    	title = "notitle";
    }
    
    Auswertung::Auswertung(string s)
    {
    	title = s;
    
    }
    

    Meine Frage ist wie kann ich mein Feld[9][9] in Zeile 3 richtig initialisieren?
    Es kommen immer diverse Fehlermeldungen.
    MFG



  • Einfach mit ={}:

    class Auswertung
    {
    private:
    	//Daten der Klasse Auswertung
    	int Feld[9][9] = {}; 
    // ...
    };
    

    Du kannst auch Werte reinschreiben wie Feld f[20] = {1, 2}; Wenn das Feld länger ist als die Anzah der Werte, werden die restlichen mit 0 aufgefüllt.

    Auswertung::Auswertung()
    {
    	Feld[9][9] = 0;
    	title = "notitle";
    }
    

    Dein Array ist 9 Felder lang, die Indizes sind also 0 bis 8. Du darfst nicht auf Feld[9][9] zugreifen!



  • public:
    	//Deklaration der Konstruktoren
    	// Auswertung(); entfernen
    	Auswertung(string title = "notitle") : title{ title } {}
    	// ~Auswertung(); entfernen
    


  • @Swordfish sagte in Mehrdimensionales Array in C++ Klasse initialisieren:

    public:
    	//Deklaration der Konstruktoren
    	// Auswertung(); entfernen
    	Auswertung(string title = "notitle") : title{ title } {}
    	// ~Auswertung(); entfernen
    

    Ist die Einführung eines Konversionkonstruktors Absicht?



  • @john-0 Da fehlt wohl noch explicit.



  • @Swordfish sagte in Mehrdimensionales Array in C++ Klasse initialisieren:

    @john-0 Da fehlt wohl noch explicit.

    Wenn man sich für einen Konstruktor mit Default Parameter entscheidet, dann hat man Seiteneffekte.

    public:
        Auswertung () : title ("notitle") {}
        explicit Auswertung (const std::string& s) : title (s) {}
    

    vermeidet das Problem.


Log in to reply