Objekt einer eigenen Klasse als Funktiosparameter übergeben



  • Hi,

    ich möchte ein Objekt einer eigenen Klasse als Funktiosparameter übergeben, kriegs aber kleider nich auf die Reihe.

    Kann mir irgendwer weiter helfen?

    void SetObj( ClassXY objekt )
    { 
       ClassXY temp;
    
       temp = objekt;
    };
    
    ClassXY GetObj( )
    {
       ClassXY temp;
    
       return temp;
    }
    
    main( )
    {
       ClassXY myXY;
    
       SetObj( myXY );
       myXY = GetObj();
    
    }
    


  • Chris0815 schrieb:

    void SetObj( ClassXY objekt )
    { 
       ClassXY temp;
    
       temp = objekt;
    };
    
    ClassXY GetObj( )
    {
       ClassXY temp;
    
       return temp;
    }
    

    vielleicht so?

    ClassXY temp;
    
    void SetObj( ClassXY objekt )
    { 
       temp = objekt;
    }
    
    ClassXY GetObj( )
    {
       return temp;
    }
    


  • Das Eigentliche Problem ist anscheinend das der = operator nicht funktioniert.
    Wenn ich ihn überlade bekomme ich eine Fehlermeldung von wegen Kopier-Konstruktor ist explicit.



  • Chris0815 schrieb:

    kriegs aber kleider nich auf die Reihe.

    Was heißt denn "kriegs nich auf die Reihe"?
    Fehlermeldung?
    Wie sieht ClassXY aus?
    CopyConstructible?

    Davon ab:

    void SetObj( ClassXY objekt )
    {
       ClassXY temp;
    
       temp = objekt;
    }; // <--- Das Semikolon brauchst du nicht
    
    ClassXY GetObj( )
    {
       ClassXY temp;
    
       return temp;
    }
    
    main( ) // <--- "int main()", schon mal gesehen irgendwo?
    {
       ClassXY myXY;
    
       SetObj( myXY );
       myXY = GetObj();
    
    }
    


  • OK,
    die Übergabe funktioniert als Referenzparameter. 😃
    Als Rückgabewert bemängelt der Compiler

    error C2582: Die Funktion 'operator =' ist in 'CLineProperties' nicht verfügbar

    Wenn ich nun den = operator überlade kommt folgende Meldung:

    error C2558: class 'CLineProperties': Kein Kopierkonstruktor verfügbar oder der Kopierkonstruktor is als 'explicit' deklariert

    ...und ich hab keine Ahnung wie man einen Kopierkonstruktor definiert 😕



  • Chris0815 schrieb:

    ...und ich hab keine Ahnung wie man einen Kopierkonstruktor definiert 😕

    class ClassXY
    {
    public:
      ClassXY( const ClassXY& other );            // <--- Copy C'tor
      ClassXY& operator=( const ClassXY& other ); // <--- Assignment op
    };
    


  • Danke! Hat funktioniert, ein Stück weit,
    leider hab ich jetzt Linkerfehler! 😞

    LinePropertiesDlg.obj : error LNK2001: Nichtaufgelöstes externes Symbol "public: class CLineProperties & __thiscall CLineProperties::operator=(class CLineProperties const &)" (??4CLineProperties@@QAEAAV0@ABV0@@Z)

    LinePropertiesDlg.obj : error LNK2019: Nicht aufgelöstes externes Symbol '"public: __thiscall CLineProperties::CLineProperties(class CLineProperties const &)" (??0CLineProperties@@QAE@ABV0@@Z)', verwiesen in Funktion '__ehhandler$??1CLinePropertiesDlg@@UAE@XZ'

    Hast Du dazu vielleicht auch einen Tip für mich?



  • Chris0815 schrieb:

    Danke! Hat funktioniert, ein Stück weit,
    leider hab ich jetzt Linkerfehler! 😞

    Erm, du hast nicht zufällig vergessen CLineProperties::CLineProperties(class CLineProperties const &) und CLineProperties & CLineProperties::operator=(class CLineProperties const &) zu implementieren?



  • Danke! Hat funktioniert, ein Stück weit,
    leider hab ich jetzt Linkerfehler! 😞

    LinePropertiesDlg.obj : error LNK2001: Nichtaufgelöstes externes Symbol "public: class CLineProperties & __thiscall CLineProperties::operator=(class CLineProperties const &)" (??4CLineProperties@@QAEAAV0@ABV0@@Z)

    LinePropertiesDlg.obj : error LNK2019: Nicht aufgelöstes externes Symbol '"public: __thiscall CLineProperties::CLineProperties(class CLineProperties const &)" (??0CLineProperties@@QAE@ABV0@@Z)', verwiesen in Funktion '__ehhandler$??1CLinePropertiesDlg@@UAE@XZ'

    Hast Du dazu vielleicht auch einen Tip für mich?



  • Entschuldige, die Mehrfachposts und lange Antwortzeiten, mein Internetzugang hakt einwenig 😡

    Implementieren?? 😉

    Vielen Dankn für Deine Hilfe jetzt rennt's 😃


Anmelden zum Antworten