?
hallo,
ich habe da mal eine Frage!
siehe Quellcode:
es wird in der Classe ein Handle auf dem Heap erzeugt
---->"behaelter ^rohr"
ref class behaelter {
Int32 fuellstand;
behaelter^ rohr;
public:
void init(Int32 menge);
void leitungLegen(behaelter^ neu);
void fuellstandAusgeben();
void rauspumpen(Int32 menge);
Int32 aufnehmen(Int32 menge);
};
soweit so gut
verstehe ich das richtig,
das "Rohr" hat die gleichen Eigenschaften wie der Behälter?
also mit allen Methoden und Attributen?
void behaelter::init(Int32 menge) {
fuellstand = menge;
}
void behaelter::leitungLegen(behaelter^ neu) {
rohr = neu;
}
void behaelter::rauspumpen(Int32 menge) {
Int32 gepumpt;
if (menge > fuellstand)
gepumpt = rohr->aufnehmen(fuellstand);
else
gepumpt = rohr->aufnehmen(menge);
fuellstand = fuellstand - gepumpt;
}
Int32 behaelter::aufnehmen(Int32 menge) {
Int32 rueckgabe;
if (menge + fuellstand > 100) {
rueckgabe = 100 - fuellstand;
fuellstand = 100;
}
else {
fuellstand = fuellstand + menge;
rueckgabe = menge;
}
return rueckgabe;
}
int main(array<System::String ^> ^args)
{
behaelter^ behaelter1;
behaelter^ behaelter2;
behaelter1 = gcnew behaelter;
behaelter2 = gcnew behaelter;
behaelter1->init(60);
behaelter2->init(60);
behaelter1->leitungLegen(behaelter2);
behaelter2->leitungLegen(behaelter1);
ausgabe(behaelter1, behaelter2);
es soll eine "Beziehung" vereinbart werden, über
behaelter1->leitungLegen(behaelter2);
wie kann ich das verstehen?
von behaelter1 wird ein "rohr" nach behaelter2 gelegt
also über das Attribut "rohr" wurde ja ein Handle in der Classe erzeugt
mit den gleichen Eigenschaften wie "behaelter"
dieses zeigt nun auf behaelter2
ja aber ist das nicht ein neues Handle im Handle?
wie kann da eine Beziehung sein?
ich Verstehe das nicht
-hat das Handle "rohr" die gleichen Eigenschaften wie "behaelter" ?
-durch die Vereinbahrung rohr<->behaelter2 wird doch ein neues Handle
in der anderen Classe gebildet, wie kann ich da dann die Werte abfragen?
ich hoffe mir kann geholfen werden
beste Grüße