Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

Wie in VC++ Strukturen klassenübergreifend kopieren (zuweisen)

(Anonym) / 2 Antworten / Baumansicht Nickles

Ich kann mit
struct Mensch
{
BYTE Alter;
CString Name;
};
Mensch M1,M2;

eine Struktur und 2 Membervariablen global in einer Dialogklasse definieren.
Im Dialog kann ich dann den Inhalt zuweisen

M1.Name="Hans"; M1.Alter=27;
M2=M1;

und kopieren.

Wenn ich jetzt Mensch auch außerhalb der Dialogklasse verwenden und kopieren will muss ich in der aufrufenden Klasse die Struct Mensch neu definieren.
Da der Compiler nicht weiß, daß es die gleiche Struktur ist, kann ich sie nicht mehr mit = kopieren. z.B. um die Membervariablen des Dialogs zu initialisieren.
Ich löse das immer durch ne Klasse statt ner Struktur und definiere mir einen neuen = Operator für ne CopyFunktion.
Ich finde das Verfahren aber sehr mühselig und muss außerdem wenn ich ein neues Element einfüge auch immer die Operator Funktion umschreiben.

Weiß jemand Rat.
Gruß Wolf



bei Antwort benachrichtigen
Anonym (Anonym) „Wie in VC++ Strukturen klassenübergreifend kopieren (zuweisen)“
Optionen

mach die andere Klasse wenn es das Programmdesign zuläßt zur friend-class!

bei Antwort benachrichtigen
Dreamforger (Anonym) „Wie in VC++ Strukturen klassenübergreifend kopieren (zuweisen)“
Optionen

Definiert C++ nicht automatisch einen Copykonstruktor?
Ansonsten kannst du dir vieleicht mit memmove und nem cast helfen.

Ich verstehe auch dein Problem nicht ganz, drum sind die Vorschläge wohl etwas daneben

bei Antwort benachrichtigen