objekte, methodenaufrufe...



  • mahlzeit,
    kurze frage zu methodenaufrufen des gleichen objekts:
    gibt es operatoren, die einem erlauben anstatt

    objekt.methode1(param1);
    objekt.mehtode2(param2);
    objekt.mehtode3(param3);
    objekt.mehtode4(param4);
    

    einfach nur

    "FOR" objekt "CALL METHODS"
    {
      methode1(param1);
      methode2(param2);
      methode3(param3);
      methode4(param4);
    }
    

    zu schreiben?!

    die frage ist zwar nicht der knaller, aber es würde mich mal interessieren, weil's in meinen augen doch besser aussieht!

    na denn,
    greetz lynxx



  • Hi,

    klar geht das: Musst Dir nur eine entsprechende Funktion schreiben:

    void callAll(MyObjectClass& a, param1Typ p1, param2Typ p2, param3Typ p3, param4Typ p4) {
      a.methode1(p1);
      a.methode2(p2);
      a.methode3(p3);
      a.methode4(p4);
    }
    
    // wird aufgerufen als:
        callAll(object, param1, param2, param3, param3);
    

    Da ich aber vermute, dass Du etwas "Generischeres" möchtest: Nein, ein derartiges Konstrukt bietet C++ (meines Wissens) nicht.
    - Habe ich aber auch noch nie vermisst. 😉

    Gruß,

    Simon2.



  • hehe,
    ja ich meinte was generisches...
    find's schade, das es soetwas nicht gibt 😉

    auf jeden fall besten dank



  • Simon2 schrieb:

    Da ich aber vermute, dass Du etwas "Generischeres" möchtest: Nein, ein derartiges Konstrukt bietet C++ (meines Wissens) nicht.

    Na ja, analog zu 'With xyz' in VB könnte man folgendes schreiben:

    {T& _ = obj;
        _.methode1(p1);
        _.methode2(p2);
        _.methode3(p3);
        _.methode4(p4);
    }
    

    Wobei 'T' dann eben der gewünschte Typ ist. Würde ich zwar nicht machen ('_' als Variablenname ist z.B. recht schlecht). Aber es geht.



  • Würde ich zwar nicht machen ('_' als Variablenname ist z.B. recht schlecht). Aber es geht

    Fürwahr, aber man kann ja "o" oder sowas als Variablenname nehmen.



  • Wenn es doch nur schon Whitespace-Overloading gäbe ... 😉


Anmelden zum Antworten