Daten in Array schreiben?
-
Hallo erst mal,
ich habe folgendes Problem:Ich deklariere ein int Array (int m_aMyArray[2][8]) als private Member meiner Klasse. Jetzt würde ich gern im Konstruktor das Array mit Daten füllen, würde das aber ungern in der Form: m_aMyArray[0][0]=1, m_aMyArray[0][1]=2,... tun und habe also probiert:
CMyClass::CMyClass()
{
m_aMyArray = {1,...,16};
}erhalte aber eine Fehlermeldung 'ungültige Syntax', bin mir aber ziemlich sicher, das dass schon mal funktioniert hat o. irre ich? Wenn ja, gibt es eine andere Möglichkeit ein Array effizient mit konstanten Daten zu füllen ohne den [] Operator zu verwenden?
-
Da es ein zweidimensionales Array ist geht entweder das:
m_aMyArray = { {1,1} , {2,2} , .. }
oder per Schleife das:
for (int i = 1 ; i < 2 ; ++i) { for (int j = 1 ; j < 8 ; ++j) m_aMyArray[i][j] = j; //oder i oder sonstwas }
greetz,
Neo
-
die unmöglichkeit, arrays, die member sind, vernünftig zu initialisieren ist ein altes problem. initialisierungslisten im sinne von
m_aMyArray = {1,...,16};
funktionieren nur in verbindung mit einer variablendefinition. und in konstruktorinitialisierungslisten geht es gleich gar nicht. das bedeutet ganz nebenbei, dass man keine arrays von const T oder referenzen als membervariablen haben kann. entweder du initialisierst im konstruktor direkt mittels schleife o.ä oder du verpackst das array in ein struct oder class und verlagerst das problem in den konstruktor des structs. in diesem fall könntest du zumindest in der klasse, die das array als member haben soll, initialisierungslisten verwenden und die nat. reihenfolge der initialisierung bleibt erhalten.
-
Vielen Dank!
@NeoInferno:
m_aMyArray = { {1,1} , {2,2} , .. } funktioniert leider auch nicht.
@All:
Und ich denke schon seit Jahren ich wäre einfach nur zu blöd, schade eigentlich.
Eine For Schleife ist leider schwierig, da die Daten ungeordnet sind, ich werde also a[x][y]=z; usw in Angriff nehmen.Nochmals vielen Dank!
Connan