Variable bei Funktionsaufruf



  • Hallo erstmal,

    ich habe mal wieder eine Frage: Ist es möglich, eine Variable anstatt dem normalen Funktionsaufruf mitzuliefern (NICHT Klammerparameter, sondern vor dem Punkt)? Ein Beispiel:

    Nicht so:

    nexus.erzeuge()
    

    sondern so:

    string bla = "nexus";
    bla.erzeuge()
    

    sodass bei beiden Varianten das gleiche rauskommt.



  • dein beispiel und deine frage widersprechen sich. aber ich denke auf beide varianten lautet die einfache antwort: nein, so wie du das möchtest, ist es nicht möglich.



  • Ich bin verwirrt... Was willst du mit der Frage ausdrücken?

    Grundsätzlich musst du Methodenaufrufe in der folgenden Form schreiben:
    <objekt>.<methode>(<Parameterliste>);

    Du kannst nicht auf etwas das nicht über die Methode verfügt einen Aufruf machen. Was du aber machen kannst, ist ein anderes Objekt (was ja auch eine Variable vom Typ der Klasse ist) zu verwenden.

    cu André



  • Vielleicht solltest du einfach mal sagen was du erreichen willst (an einen konkreten Beispiel).

    cu André



  • Ich möchte das Objekt der Funktion nicht direkt hinschreiben, sondern per Variable. Ist schwer zu erklären, ich machs mal an einem Beispiel:

    string objekt = "objekt";
    funktion(objekt);
    
    void funktion(string x) {
        x.funktion2(); //= objekt.funktion2();
    }
    
    void funktion2() {
        cout<<"Irgendwas";
    }
    

    Was in diesem Fall also das gleiche wäre wie:

    funktion();
    
    void funktion() {
        objekt.funktion2();
    }
    
    void funktion2() {
        cout<<"Irgendwas";
    }
    

    In diesem Beispiel wäre das unnötig. Ich will aber das Objekt an eine Funktion übergeben (als Parameter) und diese Funktion ruft dann mit diesem Parameter eine zweite Funktion auf. Eine bessere Erklärung fällt mir nicht ein, ich hoffe ihr versteht, was ich meine.



  • Nein, so kann man in C++ nicht programmieren und braucht es normalerweise auch nicht. Das geht soweit ich weiß nur in PHP. Sag was du konkret damit machen willst, dann kann man dir bessere Methoden dafür vorschlagen!



  • Alemarius Nexus schrieb:

    Eine bessere Erklärung fällt mir nicht ein, ich hoffe ihr versteht, was ich meine.

    Nicht wirklich (ich jedenfalls nicht). Vielleicht schreibst Du mal ein Beispiel wo es nicht unnötig wäre. Das, was Du beschreibst hört sich jedenfalls einfach nach folgendem an:

    string objekt = "objekt";
    funktion(objekt);
    
    void funktion(string & x) {
        x.substr(10, 3, 4);
    }
    

    😕



  • Er möchte den Namen des Objektes zur Laufzeit als String angeben. Dies ist direkt in C++ nicht möglich, da nach dem kompilieren ja eh alle Namen durch Adressen ersetzt sind. Man kann ein derartiges Verhalten aber über eine map nachbilden.



  • Braunstein schrieb:

    Er möchte den Namen des Objektes zur laufzeit als String angeben.

    Ohje, jetzt erkenne ich es auch. Da war die Nicht-Möglichkeit wohl in meinem Hirn derart präsent gewesen, dass ich diese Interpretation des Wunsches unbewusst bereits ausgeblendet hatte 😉



  • Ich habe auch ne Methode, die dauert nur deutlich länger, naja scheint ja dann nicht zu gehen. Trotzdem danke für die Hilfe.



  • Es stellt sich die Frage, wozu du sowas überhaupt brauchst?


Anmelden zum Antworten