Klassen in Funktionen übergeben



  • @Th69 Tut mir leid, aber könntest du ein konkretes Beispiel zeigen? Bin recht neu



  • @daniel sagte in Klassen in Funktionen übergeben:

    könntest du ein konkretes Beispiel zeigen?

    Was @Th69 geschrieben hat ist ein konkretes Beispiel für eine Funktion, die ein Objekt eines beliebigen Typs nimmt und dessen Member x und y verändert ...



  • ja, is typename dann der name der Klasse?



  • @daniel T und U sind die Typen der übergebenen Parameter. typename (oder class) ist das Schlüsselwort um Type template parameter zu deklarieren.



  • This post is deleted!


  • Zeig doch mal was du an Quellcode schon hast, dann können wir dir vielleicht konkreter helfen. Ich gehe davon aus, dass dir die bisherigen Antworten nicht wirklich geholfen haben 😉



  • @daniel sagte in Klassen in Funktionen übergeben:

    Ich möchte zum Beispiel die Koordinaten eines beliebigen Objektes verändern:

    void move(object, dx, dy){
        object.x += dx
        object.y += dy
    }
    

    Und jetzt frage ich mich, was ich als Paramtere angeben soll, weil C++ ja immer den Datentyp wissen will

    void move (MyClass object, int dx, int dy) //MyClass = der name deiner Klasse
    

    sofern du in MyClass mit int gearbeitet hast.



  • @Darktutnix Thema verfehlt. Es geht darum ein Objekt eines *beliebigen* Typs zu übergeben. Das geht entweder mit Templates oder mit übergabe eines Basisklassenzeigers für eine Klassenhierarchie.



  • @Swordfish sagte in Klassen in Funktionen übergeben:

    @Darktutnix Thema verfehlt. Es geht darum ein Objekt eines *beliebigen* Typs zu übergeben. Das geht entweder mit Templates oder mit übergabe eines Basisklassenzeigers für eine Klassenhierarchie.

    Dann habe ich ihn falsch verstanden. Glaube allerdings das er einfach nicht weiß wie man Instanzen an funktionen übergibt. Bezweifle das "beliebig" sich hier auf unterschiedliche Klassen mit gleichen Parametern bezieht, da es ja doch recht Spezifisch ist.

    Sonst würde ich auf Vererbung Tippen, wobei hier MyClass = ParentClass sein müsste. Also für einen etwas geübten auch nicht so schwer zu begreifen.

    Wenn ich raten müste sieht sein code irgendwie so aus:

    void main(){
         //......
         MyClass instanc = new MyClass();
         //......
         move(instanc, 5,7);
         //......
    }
    

    Die Sache das er hier:

    @Th69 sagte in Klassen in Funktionen übergeben:

    Oh, ja:

    template<typename T, typename U>
    void move(T& object, U dx, U dy)
    {
        object.x += dx
        object.y += dy
    }
    

    fragte was T bzw U ist, deutet für mich auf einen Anfänger hin. Da ist es schwer zu begreifen was der unterschied zwischen dem was du schreibst (Klasse) und der eigentlichen erzeugten Box (instanz) ist. Sollte ich falsch liegen entschuldige ich mich und lösche meine störenden Aussagen gern wieder 🙂



  • @Darktutnix sagte in Klassen in Funktionen übergeben:

    Dann habe ich ihn falsch verstanden. Glaube allerdings das er einfach nicht weiß wie man Instanzen an funktionen übergibt. Bezweifle das "beliebig" sich hier auf unterschiedliche Klassen mit gleichen Parametern bezieht, da es ja doch recht Spezifisch ist.

    @daniel sagte in Klassen in Funktionen übergeben:

    Und jetzt frage ich mich, was ich als Paramtere angeben soll, weil C++ ja immer den Datentyp wissen will

    klingt schon sehr danach, daß es verschiedene Typen sind, die OP übergeben können wollen tut.


Log in to reply