Alle Elemente einer Strukt ermitteln



  • unskilled schrieb:

    1. wieso eigtl enum {number,foo,bar,SIZE}; ? brauchst ja iwie nur SIZE...

    Ich will nicht nur mit Schleife durchlaufen, sondern alternativ auch benannte Members haben.

    t.get(Test::durchschnitt)=t.get(Test::summe)/t.get(Test::anzahl);
    

    2. wieso sieht man konstanten so oft als enums anstatt const size_t oder was auch immer der richtige typ wäre?! nur schreibfaulheit oder gibts da noch irgendwo vorteile?

    in diesem fall will ich fortlaufende zahlen von 0 bis SIZE haben. das macht enum so toll automatisch. anderenfalls hätte ich natürlich eine normale konstante genommen.



  • Was? Variablen in einer Struktur sind nicht zwingend hintereinander im Speicher angeordnet?
    What the heck? Darauf verlassen sich aber viele... Und ich hatte seit Jahren noch nie Probleme...

    😕 ⚠



  • ok - leuchtet mir ein ^^

    Cast0r schrieb:

    Was? Variablen in einer Struktur sind nicht zwingend hintereinander im Speicher angeordnet?
    What the heck? Darauf verlassen sich aber viele... Und ich hatte seit Jahren noch nie Probleme...

    😕 ⚠

    iwie hast du hier was falsch verstanden ^^



  • Cast0r schrieb:

    Was? Variablen in einer Struktur sind nicht zwingend hintereinander im Speicher angeordnet?

    Insofern hintereinander, dass Variablen, die später deklariert sind, höhere Adressen haben (innerhalb des gleichen Zugriffsspezifizierers). Aber nicht, dass sie direkt aufeinanderfolgen müssen, also die Grösse einer Struktur der Summe aller Membergrössen entsprechen muss.

    Cast0r schrieb:

    What the heck? Darauf verlassen sich aber viele... Und ich hatte seit Jahren noch nie Probleme...

    Das heisst ja nichts. Wenn du mit einer bestimmten Implementierung arbeitest und weisst, wie sich diese verhält, oder sogar das Alignment beeinflussen kannst, geht das lange gut. Der Standard garantiert es trotzdem nicht, was ich aber nicht für so schlimm halte. In C++ werkelt man nicht so häufig mit rohen Structs und Zeigern rum wie zum Beispiel in C. Oft handelt es sich nicht mal um PODs, und in solchen Fällen ist byteweises Rumhantieren sowieso verboten. Deshalb ist es meistens keine Einschränkung, dass man sich nicht auf die interne Anordnung und Ausrichtung der Member verlassen kann.



  • Dummkopf schrieb:

    Wie ist es den möglich auf die einzelnen Variablen der Struktur zuzugreifen ohne die Namen der Variablen zu wissen? 😕

    Beschreibe am besten präzise Dein übergeordnetes Ziel statt so eine spezielle Frage zu stellen, ohne weitere Details zu nennen. Siehe Punkt 7 von "Du brauchst Hilfe?".

    C++ ist relativ "Ballast-frei", was Metadaten angeht. Reflexion gibt es weder zur Laufzeit (würde Metadaten erfordern) noch zur Compile-Zeit.

    Die beste Antwort auf Deine Frage ist meiner Meinung nach immer noch: "Geht nicht! Was willst Du eigentlich?" -- auch wenn es mit dem "Geht nicht" nicht die ganze Wahrheit ist. :p

    Gruß,
    SP



  • Sieht aus wie ein Troll: Ich will, ich will, ich will ...
    C++ hat kein Reflection von Haus aus. Es existieren keine Namen fuer Attribute nach dem Kompilieren. Es geht nicht. Alle geposteten Versuche halte ich fuer schlecht, da sie die Abstraktion (struct) durchbrechen und auf der jeweiligen Implementation (roher Speicher) operieren.



  • Ich gehe auch mal stark davon aus, dass es eine deutlich bessere Lösung für sein Problem gibt.

    Vielleicht könnte er mal seine Zielsetzung ausplaudern. So geheim und innovativ wird es schon nicht sein, als das jemand sein Wissen klauen könnte 🙂


Anmelden zum Antworten