int array in struct
-
also mein lieber Froschkönig,
ich habe ja normalerweise ein hohe schmerzgrenze.
Also im C++ Primer steht folgendes:
struct inflatable // structure template { char name[20]; float volume; double price; }; int main() { inflatable guest = { "Glorious Gloria", // name value 1.88, // volume value 29.99 // price value }; // guest is a structure variable of type inflatable // It's initialized to the indicated valuesAlso ich initialisiere mein struct nicht anders, vielleicht solltest Du nochmal C++ Grundlagen durchnehmen.
Mein Problem ist nur das ich beim initialisieren eines integer array nicht klarkomme.....
-
Du kannst grundsätzlich ein Array nicht mit einem anderen Array initialisieren.
char cA[] = "Hallo"; char cB[6] = cA; // Fehler int iA[] = {1, 2, 3, 4, 5}; int iB[] = iA; // FehlerEin Array lässt sich nur mit einer Liste von passenden Werten initialisieren. Ausnahmen sind Character-arrays (§8.5.2) die auch mit Zeichenkettenliteralen initialisiert werden können.
-
Also ich initialisiere mein struct nicht anders, vielleicht solltest Du nochmal C++ Grundlagen durchnehmen.
Da hast du anscheinend recht. Ich habe bisher immer angenommen, dass struct und class sich bis auf die default Zugangsberechtigung nicht unterscheiden.
Zitat C++Primer: The only difference between a class defined with the class keyword or the struct keyword is the default acces level.Dass man structs auch so initialisieren kann, wusste ich nicht.
Also im C++ Primer steht folgendes:
Ernst gemeinte Frage: Auf welcher Seite steht das? Ich kann dazu in der aktuellen, vierten Edition nichts finden.
-
Froschkönig schrieb:
Ich habe bisher immer angenommen, dass struct und class sich bis auf die default Zugangsberechtigung nicht unterscheiden.
Damit hast du völlig Recht.
Froschkönig schrieb:
Dass man structs auch so initialisieren kann, wusste ich nicht.
Das liegt daran, dass es sich um ein Aggregat handelt, und nicht am
struct. Versuch das Gleiche mitclassund einenpublic-Spezifizierer am Anfang, es wird ebenso funktionieren.
-
Das liegt daran, dass es sich um ein Aggregat handelt, und nicht am struct. Versuch das Gleiche mit class und einen public-Spezifizierer am Anfang, es wird ebenso funktionieren.
Ah, vielen Dank für die Aufklärung.
Entweder es steht im aktuellen Primer nicht drin oder ich habs überlesen. Davon habe ich wirklich noch nie gehört...
-
Froschkönig schrieb:
Entweder es steht im aktuellen Primer nicht drin oder ich habs überlesen. Davon habe ich wirklich noch nie gehört...
12.4.5. Explizite Initialisierung von Klassenelementen (S.549)
-
@Froschkönig
C++ Primer Plus by Stephen Prata auf Seite 161also ich habs jetzt so gemacht...
geht das eleganter??struct meinstruct{ int a; int b; int myintarray[8]; .. }; int d(0); d=7; int r(0); r=6; int aGDM[8]; for(short int i(0); i < 8; i++) aGDM[i]=0; meinstruct Kordin; Kordin.a=d; Kordin.b=r; for(short int i(0); i < 8; i++) Kordin.myintarray[i]=aGDM[i];
-
Wie wäre es damit?
#include <iostream> using namespace std; struct aggregate { int a; int b; int* ip; }; int main() { int ivec[] = {1, 2, 3, 4, 5, 6, 7, 8}; aggregate test = {0, 0, ivec}; cout << test.ip[7]; cin.get(); }@ismaild & Mitleid
Danke, jetzt habe ich's gefunden.
-
ismaild schrieb:
Also im C++ Primer steht folgendes:
ismaild schrieb:
C++ Primer Plus by Stephen Prata auf Seite 161

Also der Terminus "Der Primer" oder "C++ Primer" ist bereits belegt, und zwar von dem Buch des Großmeisters, C++-Genies und Miterfinders der C++-Sprache Stanley B. Lippman. Jede andere Verwendung ist zu unterlassen.
-
ismaild schrieb:
also ich habs jetzt so gemacht...
geht das eleganter??Schreib halt einen Konstruktur für das struct und übergib dem Referenz des Arrays.
-
Du sagst uns bestimmt noch WAS du erreichen willst, oder?
Sie http://www.c-plusplus.net/forum/viewtopic-var-t-is-200753.html
Abschnitt "Frage nach dem, was du erreichen willst und nicht danach womit du es erreichen willst."Ein naives Beispiel zum Thema:
struct meinstruct{ int a; int b; int myintarray[8]; char c; double mydoublearray{9}; }; // .. int d(7); int r(6); meinstruct Kordin = {d, r, {}, 'a', {0.01, 0.03}};
-
Er will ein Array an das Strukt übergeben, ist doch wurscht wofür bei sowas Grundlegendem...
-
TdZ schrieb:
Er will ein Array an das Strukt übergeben, ist doch wurscht wofür bei sowas Grundlegendem...
Das ist deine Annahme. Wurscht bzw. wurst ist es schon in dem Moment nicht mehr, wenn "das Strukt" ein Aggregat bleiben soll und der Konstruktor ausscheidet.
Desweiteren könnte die "Füllung" der Arrays mit 0 (siehe seine Quelltexte) andeuten, dass er das gesamte Array mit 0 initialisieren und erst später etwas damit machen will.
Eine klare Aussage dazu fehlt noch.
-
Genau ich will esrtmal mit 0 initialisieren und später was damit machen.
Besten Dank Freunde für die Beiträge.