[Anfängerfrage] Kurzschreibweise zur Initialisierung eines Arrays
-
Hallo,
ich habe ein Problem bei der Kurzschreibweise zur Initialisierung eines Arrays.
int theArray[] = {1,2,3};Das funktioniert soweit ganz gut.
Nun wollte ich das Array als Membervariable einer Klasse benutzen und habe die Klasse in eine *.h und eine *.cpp Datei aufgeteilt.
Gibt es dann noch eine Möglichkeit das Array mit der Kurzschreibweise zu initialisieren?
Ich habe ein kleines Beispiel aufgesetzt, das das Problem zeigt.
MyArray.h
#ifndef MYARRAY_H_ #define MYARRAY_H_ class MyArray { private: int* theArray; public: MyArray(); }; #endif /* MYARRAY_H_ */MyArray.cpp
#include "MyArray.h" MyArray::MyArray() { this->theArray = {1,2,3,4}; }cannot convert ‘<brace-enclosed initializer list>’ to ‘int*’ in assignment MyArray.cpp
Ich würde das Array gerne in der Kurzschreibweise initialisieren, da es sich eigentlich um ein 2 dimensionales 8x8 Array mit enum Werten handeln sollte und die Lesbarkeit bei der Kurzschreibweise wahrscheinlich besser ist.
Ursprüngliches Problem ist die Initialisierung des Spielfelds für Kamisado (http://de.wikipedia.org/w/index.php?title=Datei:Kamisado-board1.jpg&filetimestamp=20101231112829), das ich mir als Lernprojekt ausgesucht habe
Gruß
Constantin
-
Constantin Noll schrieb:
Gibt es dann noch eine Möglichkeit das Array mit der Kurzschreibweise zu initialisieren?
Nein, sei denn, das Array ist ein statischer Member. Nebenbei bemerkt ist ein Zeiger sowieso kein Array.
-
Danke für die schnelle Antwort.
Dann muß ich wohl damit leben
camper schrieb:
Nebenbei bemerkt ist ein Zeiger sowieso kein Array.
Ich habe bisher in meinen Büchern keinen Hinweis darauf gefunden, dass sich die beiden Deklarationen unterscheiden würden:
int* a; int b[];Wo liegt denn der Unterschied?
Gruß
Constantin
-
Constantin Noll schrieb:
Ich habe bisher in meinen Büchern keinen Hinweis darauf gefunden, dass sich die beiden Deklarationen unterscheiden würden:
int* a; int b[];Wo liegt denn der Unterschied?
Das eine definiert einen Zeiger, dass andere ein Array mit unbestimmten Grenzen (was für sich allein genommen nicht zulässig ist).
Ein Array ist ein Objekt, dass eine bestimmte Anzahl gleichartiger Subobjekte enthält.
Ein Zeigerobjekt ist ein Objekt, dessen Wert dazu benutzt werden kann, auf andere Objekte zu verweisen.
-
Danke für die Antwort.
Ich schaue mir das nochmal genauer an.
-
Vielleicht entsteht die Verwirrung, weil
int* aundint a[]in Parameterlisten tatsächlich äquivalent sind und beide einen Zeiger deklarieren (Arrays kann man nicht an Funktionen übergeben). Ansonsten gilt das aber nicht.
-
Ich habe den Codeschnipsel gefunden, der bei mir den Eindruck erweckte, dass a und b das gleiche seien:
C++ von A-Z S.166 | ISBN: 978-3-8362-1429-2 schrieb:
//... int iarray[] = {11,22,33}; // iptr zeigt auf das erste Element von iarray int* iptr = iarray; for ( unsigned int i = 0; i < sizeof(iarray) / sizeof(iarray[0]); i++ ) { cout << *iptr << '\n'; iptr++; } //...Der Hinweis mit der Parameterliste erklärt dann auch den Unterschied, weil bei der Übergabe als Pointer dann z.B. die sizeof Information verloren geht und man die Array-Größe mit übergeben muß.
Ich denke ich habs jetzt. Danke.
-
Constantin Noll schrieb:
C++ von A-Z
Das Buch ist bei uns alles andere als beliebt. Schau dir dazu vielleicht mal diesen Thread an...
-
Ich lese mir den Thred jetzt mal nicht ganz durch.
Das ist ja ein brennendes Thema.Aber ich sehe das Buch auch nicht als Experten Referenz an.
Wenn ich mich in eine Programmiersprache einarbeite 'verheize' ich gerne das erste Buch und lese es nur durch. Ich weiß genau, daß ich das Buch nicht ein zweites mal lesen werde. Und dafür sind die Bücher von Galileo Computing generell gut geeignet.Der Code, aus dem Buch, den ich gepostet habe, ist ja erstmal nicht falsch.
Es ist natürlich schade, wenn die Energie eines Forums verschwendet wird, um wiederholt Probleme auszumerzen, die durch ein bestimmtes Buch entstehen.Auf meinen Plan liegt als nächstes:
* Einführung in die Programmierung mit C++
* Die C++ ProgrammierspracheIch hoffe das liegt mehr im Trend des Forums.
-
Constantin Noll schrieb:
* Die C++ Programmiersprache
Struppi ftw
