array und verschiedene datentypen?
-
hallo,
ist es möglich verschiedene datentypen in einem array zu haben? also z.b. 3 intfelder und 3 stringfelder?
MfG
prox
-
Polymorphismus und entsprechend Wrapper schreiben,
dann gings. Ob es sinnvoll ist, ist ne andere Frage.Devil
-
obs sinnvoll is, is was anderes. wohl war.
mich interessierts hauptsächlich obs von haus aus möglich ist
MfG
-
Also ein
int string meinarray[19] geht nicht.
Aber du kannst ein struct machen ( wert1 = int, wert2 = string )
und dannmeinstrcut meinarray[10];
keine feine lösung, wäre aber eine. oder bau dir listen
-
ahh.. kay, danke euch
-
Von Haus aus nicht, aber boost::variant und boost::any sind für sowas genau richtig.
-
Aber du kannst ein struct machen
Aehm um zu sparen wohl eher ein union, welches "ja geau fuer sowas da iss" ....
Aber ! Arrays und unions und so gehoeren ned mehr wirklich in obkjektorientierte programmierung ... (ausnhamen bestaetigen diese regel)
Saubereres design iss allemal die sache mit der gemeinsamen basisklasse !Ciao ...
-
RHBaum schrieb:
Aber du kannst ein struct machen
Aehm um zu sparen wohl eher ein union, welches "ja geau fuer sowas da iss" ....
seit wann darf man std::string(not POD) als member in union packen?
-
Das hab ich ned gemeint( meinte eher im zusammenhang mit C-Strings, er spricht ja auch von Arrays) ... und duerfen darfst du schon(Berichtigung, man darf eigentlich nicht) ... nur wie lange dein Arbeitsvertrag dann noch haelt, iss ne andere sache
Prinzipell funktioniert es (zumindest mit einigen compilern) ... nen std::string hat auch nen konstanten datenanteil ... genau so wie jede klasse in nen union packen köntest ....
und wenn du auch noch sicherstellst, das dein std::string auch wirklich immer nur als std::string behandelt wird .... passiert nich mal was boeses, sofern keine ref zaehlung, Lock mechanismen etc hat ...aber wie gesagt, std::string ist tiefstes C++, unions sind C ....
Und das sich einem designtechnisch alle fussnägel kraeuseln wuerden, iss nen ganz anderes thema
Berichtigung: funktioniert ned mit allen kompilern ... manche checken wirklich, ob die teile nen CCtor haben
Der gcc hat mich grad geruegt, mehr als zurecht ....Ciao ...
-
RHBaum schrieb:
Prinzipell funktioniert es (zumindest mit einigen compilern) ... nen std::string hat auch nen konstanten datenanteil ... genau so wie jede klasse in nen union packen köntest ....
und wenn du auch noch sicherstellst, das dein std::string auch wirklich immer nur als std::string behandelt wird .... passiert nich mal was boeses, sofern keine ref zaehlung, Lock mechanismen etc hat ...Working Draft, Standard for Programming Language C++
Doc No: N1638=04-0078
Date: April 11, 20049.5.1
An object of a
class with a non-trivial default constructor (12.1), a non-trivial copy constructor (12.8), a non-trivial destructor
(12.4), or a non-trivial copy assignment operator (13.5.3, 12.8) cannot be a member of a union, nor
can an array of such objects12.1.11
A union member shall not be of a class type (or array thereof) that has a non-trivial constructor.
-
RHBaum schrieb:
Saubereres design iss allemal die sache mit der gemeinsamen basisklasse !
Mutige Aussage, wenn du nicht weiß, was er machen will.