initialisierungsliste - struktur
-
hallo,
gibt es unter c sowas wie ne initialisierungsliste um eine struct zu initialisieren?
struct parameter { unsigned int checksum; unsigned int step_array[4][4]; unsigned int geschwindigkeit; char offset_fuer_nulllage; };
-
hallo!
ja.
-
Lol, Trollo, sehr hilfreich .. hast du nix besseres zu tun als hier sinnlosen Müll zu posten?
Du könntest daraus 'ne Klasse machen, mit deinen Parametern im private-Bereich und 'ner Memberfunktion zur Initialisierung im public-Bereich. Dann einen Konstruktor basteln und fertig.
Etwa so:
class CParameter { private: unsigned int m_checksum; unsigned int m_step_array[4][4]; unsigned int m_geschwindigkeit; char m_offset_fuer_nulllage; public: CParameter(unsigned int checksum, /*... und so fort*/); }; //Konstruktor CParameter::CParameter (unsigned int checksum, /*... und so fort*/) { m_checksum = checksum; //... und so fort }
Aufruf (deine Initialisierung):
CParameter MyParams (17, /*... und so fort*/);
Du kannst natürlich auch einfach eine Funktion schreiben, die das für deine Struktur macht (Struktur mit übergeben), oder die dir eine Struktur zurückliefert. Also eine Funktion der du einfach deine Initialisierungswerte als Argumente übergibst, und in der du dann mit dem Strukturoperator einfach alles schön zuweist...
Etwa so (Beispiel-Funktion InitializeParameters() liefert Struktur, was bei so kleinen, selten benutzten Strukturen kein Problem ist):
struct parameter { unsigned int checksum; unsigned int step_array[4][4]; unsigned int geschwindigkeit; char offset_fuer_nulllage; }; parameter InitializeParameters(int iChecksum, /*... und so fort*/) { parameter tmpParams; tmpParams.checksum = iChecksum; //... und so fort return tmpParams; }
Aufruf (deine Initialisierung):
parameter myParams = InitializeParameters(17, /*... und so fort*/);
Eine andere Möglichkeit ist mir nicht bekannt.
-
fritzi schrieb:
hallo,
gibt es unter c sowas wie ne initialisierungsliste um eine struct zu initialisieren?
was genau meinst du mit Initialisierungsliste?
@dust: mein C Compiler kennt das 'class' Keyword nicht
-
Achja, klar, das ist ja das C-Forum und net C++ ^^ .. naja hab das Beispiel noch für eine Struktur ausgeführt. Siehe oben.
-
fritzi schrieb:
hallo,
gibt es unter c sowas wie ne initialisierungsliste um eine struct zu initialisieren?
struct parameter { unsigned int checksum; unsigned int step_array[4][4]; unsigned int geschwindigkeit; char offset_fuer_nulllage; };
Ganz einfach
struct parameter p = { 0, {{0,1,2,3}, {0,1,2,3}, {0,1,2,3}, {0,1,2,3}}, 1, 2 }; // oder wenn du gezielt einige Parameter initialisieren willst struct parameter p = { .checksum = 10, .offset_fuer_nulllage = 2 };
-
ähm ... ja ... xD ... kannte ich noch nicht.
-
dust schrieb:
ähm ... ja ... xD ... kannte ich noch nicht.
Trottel. Wie war das mit dem Müll?
-
ist das mit dem . wieder so eine gcc besonderheit oder in C99 drin?
-
Hi!
Man kann das ganze auch in eine "Art" Klasse verpacken.
#include <stdlib.h> struct Point { int x; int y; }; /* Konstruktor */ Point* initPoint(int x, int y) { struct Point *ret_val=NULL; ret_val=malloc(sizeof(struct Point)); if(ret_val==NULL) { return NULL; } ret_val->x=x; ret_val->y=y; return ret_val; } /* Destruktor */ void destroyPoint(struct Point *point) { free(point); } int main() { struct *point = NULL; point = initPoint(x,y); destroyPoint(point); return 0; }
Das mach ich ganz gerne.
-
wurst schrieb:
ist das mit dem . wieder so eine gcc besonderheit oder in C99 drin?
in C99.