Benutzer mit den meisten Antworten
Strukturen initialisieren

Frage
-
Hallo,
ich möchte im Konstruktor meiner Klasse Membervariablen initialisieren.
Die Membervariable ist ein pair aus einem String und einer verschachtelten Struktur.
Die Struktur setzt sich folgendermaßen zusammen:
typedef enum param_value_types {
PRO_PARAM_DOUBLE = 50,
PRO_PARAM_STRING = 51,
PRO_PARAM_INTEGER = 52,
PRO_PARAM_BOOLEAN = 53,
PRO_PARAM_NOTE_ID = 54,
PRO_PARAM_VOID = 57
} ProParamvalueType;typedef union param_value_values {
double d_val;
int i_val;
short l_val;
ProLine s_val;
} ProParamvalueValue;
typedef struct Pro_Param_Value {
ProParamvalueType type;
ProParamvalueValue value;
} ProParamvalue;Membervariable ist so deklariert:
pair <string, ProParamvalue> m_Test;
Kann ich diese Membervariable jetzt im Konstruktor meiner Klasse initialisieren???
Vielen Dank für die Bemühungen!
Gruß Lars
Antworten
-
Nein!
Solch eine Initialisierung ist nur für Variablen möglich, aber nicht in der Member Definition ein Klasse im Konstruktor. Also das geht nicht:
struct S { int a; double b; }; class C { public: C() : m_s = { 1,3.0 } // GEHT NICHT!!! { } private: S m_s; };
Du könntest den Umweg gehen und im Konstruktor eine temporäre Variabe mit { deine Daten } initialisieren und diese zuweisen.
Aber warum machst Du es nicht sauber und verpasst Deiner struct einen vernünftigen Konstruktor?
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort vorgeschlagen Martin RichterModerator Freitag, 19. November 2010 13:27
- Als Antwort markiert Lamizi Montag, 22. November 2010 06:24
-
- Als Antwort markiert Lamizi Montag, 22. November 2010 06:24
-
Warum nicht einen passenden Wertkonstruktor für die eigene Klasse, mit dem Parameter "pair <string, ProParamvalue> wert", mit dem Parameter kann man dann doch den Member initialisieren.
- Florian- Als Antwort markiert Lamizi Montag, 22. November 2010 06:25
Alle Antworten
-
Nein!
Solch eine Initialisierung ist nur für Variablen möglich, aber nicht in der Member Definition ein Klasse im Konstruktor. Also das geht nicht:
struct S { int a; double b; }; class C { public: C() : m_s = { 1,3.0 } // GEHT NICHT!!! { } private: S m_s; };
Du könntest den Umweg gehen und im Konstruktor eine temporäre Variabe mit { deine Daten } initialisieren und diese zuweisen.
Aber warum machst Du es nicht sauber und verpasst Deiner struct einen vernünftigen Konstruktor?
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort vorgeschlagen Martin RichterModerator Freitag, 19. November 2010 13:27
- Als Antwort markiert Lamizi Montag, 22. November 2010 06:24
-
- Als Antwort markiert Lamizi Montag, 22. November 2010 06:24
-
Warum nicht einen passenden Wertkonstruktor für die eigene Klasse, mit dem Parameter "pair <string, ProParamvalue> wert", mit dem Parameter kann man dann doch den Member initialisieren.
- Florian- Als Antwort markiert Lamizi Montag, 22. November 2010 06:25