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 Compilererror 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