Wie: Objekt als Argument ?



  • Servus,

    bin mit Sicherheit nicht der erste der soetwas machen möchte, finde aber nirgends dazu etwas.

    void MyClassA:Foo()
     {
         MyClassB MyInstanzA;
    
         DoSomething(MyInstanzA);
     }
    

    mit sowas

    void MyClass::DoSomething(class MyClassB)
     {
        // Do something
     }
    

    Bis zum "//Do Something" eigentlich kein Problem, aber wie rufe ich dort eine Methode von MyInstanzA auf ?

    Gruß Winn



  • Versuch doch mal:

    MyClassA::MyInstanzA.whatever()
    

    MfG

    Raptor



  • void ClassA::DoSomething(ClassB& b)
    {
    b.irgendwas();
    }

    Man sollte non-POD Klassen immer als Referenz übergeben, da eine Referenz intern ein Zeiger ist und dieser bei non-POD Typen nun einmal oft kleiner ist...



  • Mis2com schrieb:

    Man sollte non-POD Klassen immer als Referenz übergeben

    kann zu dieser regel jemand ne ausnahme konstruieren?



  • Du hast NULL Ahnung @ Raptor.
    Wenn man keine hat, einfach mal die Fresse halten...



  • volkard schrieb:

    Mis2com schrieb:

    Man sollte non-POD Klassen immer als Referenz übergeben

    kann zu dieser regel jemand ne ausnahme konstruieren?

    mhm... COW? ne, da wäre der Kopieraufwand auch recht groß gegenüber einer Indirektion...
    Wie wäre es mit einer bitset klasse? die zb 16 oder 32 bits verwaltet.
    oder einem iterator? functor? ah, langsam fallen mir doch ein paar ein 😉



  • hmmmm schrieb:

    Du hast NULL Ahnung @ Raptor.
    Wenn man keine hat, einfach mal die Fresse halten...

    ein weiteres exemplarisches beispiel dafür, wieso man sich vorm posten registrieren sollte.



  • ARGS, Fehler gefunden... Posting ist bis auf das "Danke sehr 👍 " überflüssig. Winn

    "Korrigiert"
    Irgendwie funzt das nicht... in meiner Klasse steht als Methodendeklaration

    class DoCascTrans
     {
        // ...
        proteced:
        void ResetPictureOperator(class SetTrans& MyGuides); 
        // ...
     }
    

    und in meiner Methodendefinition

    void DoCascTrans::ResetPictureOperator(class SetTrans& MyGuides)
     {
        MyGuides.FühreDieseMethodeAus();
     }
    

    Mein Compiler meckert bei der Methodendeklaration... was mach ich da falsch ?

    Error : declaration syntax error
    CascadeTrans.h line 110 void ResetPictureOperator(SetTrans& MyGuides);

    Error : declaration syntax error
    CascadeTrans.h line 125 };

    Danke schonmal an Alle! Winn 👍



  • volkard schrieb:

    Mis2com schrieb:

    Man sollte non-POD Klassen immer als Referenz übergeben

    kann zu dieser regel jemand ne ausnahme konstruieren?

    Aber sicher. Annahme: Es existiert eine POD-Klasse, die ich ruhigen Gewissens by-value übergeben darf. Dann implementiere ich ihr einen Standardkonstruktor, wodurch sich ausser der Tatsache, dass sie jetzt non-POD ist, überhaupt nichts ändert. Was genau ist dann der Grund dafür, dass by-value auf einmal scheiße ist?


Anmelden zum Antworten