Hallo Leute,
ich habe eine Aufgabe bei der ich folgendes machen muss.
Ich habe 3 Klassen mit einer "zu many" Association A->*B->*C
A: Enthält nur -iA_ : int
B: Enthält nur -iB_ : int
C: Enthält nur -IC_: int
Die Aufgabe lautet:
Implementieren den notwendigen Codefür alle Klassen, sodass A einen Kopierkonstruktur
für tiefe Kopien enthält. Containertyp list . Set und Getter sind nicht notwendig!
Weitere Konstruktoren und Destruktoren nicht notwendig!
Falls man Default-Implementierungen nutzt soll man dies begründen.
So habe ich es implementiert ist dies korrekt?
Vielen Dank für eure Rückmeldungen
Edit:
Sollte ich es richtig verstanden haben dann könnte ich in diesem Fall ja den Default Copy Constructor verwenden?
Würde ich nun ein Pointer haben z.b in der A Klasse dann müsste ich selbst den Copy Constructor implementieren um eine tiefe Kopie zu erzeugen
D.h
ich habe eine Aufgabe bei der ich folgendes machen muss.
Ich habe 3 Klassen mit einer "zu many" Association A->*B->*C
A: Enthält nur -iA_ : int
B: Enthält nur -iB_ : int
C: Enthält nur -IC_: int
Die Aufgabe lautet:
Implementieren den notwendigen Codefür alle Klassen, sodass A einen Kopierkonstruktur
für tiefe Kopien enthält. Containertyp list . Set und Getter sind nicht notwendig!
Weitere Konstruktoren und Destruktoren nicht notwendig!
Falls man Default-Implementierungen nutzt soll man dies begründen.
So habe ich es implementiert ist dies korrekt?
Copy Constructor:
class C {
private:
int iC_;
} class B {
private:
int iB_;
std::list<C *> CList_;
public:
B(std::list<C *> CList) : CList_(CList) {}
} class A {
private:
int iA_;
std::list<B *> BList_;
public:
A(std::list<B *> BList) : BList_(BList) {}
A(const A &crA) { iA_ = crA.iA_; }
}
Vielen Dank für eure Rückmeldungen
Edit:
Sollte ich es richtig verstanden haben dann könnte ich in diesem Fall ja den Default Copy Constructor verwenden?
Würde ich nun ein Pointer haben z.b in der A Klasse dann müsste ich selbst den Copy Constructor implementieren um eine tiefe Kopie zu erzeugen
D.h
Copy constructor:
class A {
private:
int iA_;
std::list<B *> BList_;
int *iPointer;
public:
A() { iPointer = new int; }
A(std::list<B *> BList) : BList_(BList) {}
A(const A &crA) {
iA_ = crA.iA_;
iPointer = new int;
*iPointer = crA.iPointer;
}
~A() { delete iPointer; }
}