Wiederholen des Qualifizierertextes umgehen



  • Ich habe folgenden Code:

    MovementData::vx += MovementData::ax;
        MovementData::vy += MovementData::ay;
        MovementData::x += MovementData::vy;
        MovementData::y += MovementData::vy;
    

    Um nicht jedes Mal MovementData::vx etc. schreiben zu müssen, fallen mir zwei Wege ein:
    1. #define MovementData MD
    2. MovementData in einen eigenen Namensraum einfügenund den dann mit using hinzufügen

    Beide Wege finde ich aber nicht besonders elegant und ich meine mich daran erinnern zu können, dass es da noch bessere Methoden gibt.



  • Was ist MovementData und wo steht dieser Code?



  • MovementData ist eine Klasse , die innerhalb der physics-Übersetzungseinheit in der Datai physics.h deklariert ist.



  • Das war zwar erst die halbe Antwort, aber trotzdem: Dann gehört dieses Codestück in eine statische Methode der Klasse.

    class MovementData {
      static unsigned int x,y,vx,xy,ax,ay;
     public:
      static void update() {
        vx += ax;
        vy += ay;
        x += vx; // bei dir vy, ich nehm an das ist ein typo
        y += vy;
      }
    };
    

    Du hast sicher deine Gründe, warum das ganze static sein muß, da will ich mal nicht nachbohren.



  • Wenn vx, vy etc. aber öffentliche Variablen der Klasse MovementData sind, dann muss man in main() doch wieder wie oben von mir beschrieben umständlich

    MovementData::vx += MovementData::ax;
    MovementData::vy += MovementData::ay;

    schreiben; oder etwa nicht, d.h. gibt es eine einfachere Möglichkeit?
    Ich will es so schreiben können:

    vx += ax
    .. .. ..



  • Warum muß der Code denn ausserhalb der Klasse stehen?

    Sowas wie with in Pascal gibts in C++ nicht.



  • du schreibst nur MovementData::update().
    und wenn du oeffentliche variablen hast, hast du mit ziemlich hoher wahrscheinlichkeit was falsch gemacht.



  • Ich spreche hier nicht von Programmierer-Etikette (öffentlich Klassendaten = "iiiiiiiieeeeh"), sondern von der reinen Möglichkeit einer Umsetzung meiner Vorstellungen *fertigbumsaus*.


Anmelden zum Antworten