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.