Zeiger kopieren?
-
Hi..
Ich habe in einer Klasse einen Zeiger(Attribut) auf ein Objekt einer anderen Klasse.
Ich würde diesen zeiger gerne mittels Methode in eine andere Klasse kopieren.Die Methode heißt
void kopiere(Tklasse1Wenn ich die Methode nun aufrufe und
objekt[2].zeiger übergebe bekomme ich einen Fehler.. Wie muss der parameter aussehen?
-
Nochmal hoffentlich verständlicher -.-
class TAuto {
private:
AnsiString Hersteller;
AnsiString Farbe;
AnsiString Kennzeichen;
AnsiString Km;
public:
...
};class Tfrei {
private:
TAuto * Auto;
public:
...
};class Tvermietet {
private:
TAuto * Auto;
AnsiString Kundenname;
AnsiString Datum;
public:
...
};class Zentrale {
private:
Tvermietet vermietete[50];
TAuto Autos[50];
Tfrei freie[50];
public:
...
void vermieten(TAuto *);
};So ist der ungefähre Aufbau meiner Klassen!
die Methode vermieten soll die Adresse des Autos aus Tfrei in die Klasse Tvermietet kopieren.
Wie muss der aufruf der Methode aussehen?
vermietete[3].vermieten(freie[3].Auto); ??
Wie kann ich die Adresse welche in dem Zeiger steht übergeben?Kann sein das der Aufbau meiner Klassen unlogisch ist..
Wenn jemand eine bessere Idee hat, immer her damit..
-
Sry, ich werd mich nun registrieren und dann kann ich auf editieren
Kann jemand meinen ersten Beitrag löschen?
Die Methode vermieten gehört in die Klasse Tvermietet und nicht in die Zentrale!
-
Hallo
Es wäre natürlich erstmal notwendig zu erfahren was denn für konkrete Fehlermeldungen kommen, denn der gezeigte Codeausschnitt ist an und für sich korrekt. Vermutlich fehlen nur ein paar Forward Declarations und richtig gesetzte includes. Dazu müßtest du aber noch die Verteilung der Klassen auf die einzelnen Dateien posten.
Ich würde eine solche Klassenstruktur verwenden :
class TKunde; // Forward Declaration class TAuto { private: AnsiString Hersteller; AnsiString Farbe; AnsiString Kennzeichen; AnsiString Km; TKunde* Kunde; public: // Konstruktor, um Kunde auf 0 zu setzen // Damit wird signalisiert das das Auto keinen Kunden hat // und damit nicht vermietet ist TAuto() : Kunde(0) { } ... }; class TKunde { TAuto * Auto; AnsiString Kundenname; AnsiString Datum; ... }; class Zentrale { private: TAuto Autos[50]; TKunden Kunden[50]; public: ... void vermieten(TAuto *); };
Jede einzelne Autoinstanz kennt nun ihren Status (Kunde == 0 : frei, Kunde != 0 : vermietet)
Desweiteren solltest du die statischen C-Arrays in Zentrale lieber durch dynamische Containerklassen ersetzen, in diesem Fall std::vector (siehe Magazinartikel hier im Forum zum Thema STL-Container)Und nicht zuletzt : sfds
bis bald
akari