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 dann

    meinstrcut 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, 2004

    9.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 objects

    12.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.


Log in to reply