klasse in klasse
-
was ich vorhabt / gemacht hab, steht ja schon im topic, meine frage is jetzt nur, wie ich dann auf methoden der einen klasse zugreife...
also wenn zB.
class test1 { //attribute & methoden //... int getLvl() { return lvl; } }; class test2 { test1 blub; //attribute & methoden //... }; //wie greif ich dann darauf zu ? //so gehts nich: int main() { test2 klasse; klasse.blub.getLvl(); return 0; }
-
Mach die Methode und die Klasse public.
-
Hallo
zuerst solltest du noch public angeben
class test2 { public : test1 blub; //attribute & methoden //... };
und die Funktion der Klasse test1 zuordnen :
int test1::getLvl() { return lvl; }
};
dann kanst du so drauf zu greifen :test2 klasse; klasse.blub.getLvl();
bis bald
akari
-
hab public in meine programm,
un daint test1::getLvl()
brauch ich doch gar nicht, wenn ich die methode in der klasse deklariere ...
-
achja, un die instanz der ersten klasse, soll im konstruktor der 2. klasse erstellt werden ...
-
Das wird sie doch auch.
btw:
Ich kann mir nicht vorstellen, dass dein Compiler keine sinnvolle Fehlermeldung gebracht hat, wie zB 'kann auf private Methode nicht zugreifen' oder ähnliches. Du solltest in Zukunft besser auf solche Sachen achten.
Ausserdem ist das hier Grundlagenwissen, das dich vor Probleme stellt. Denkst du nicht, dass es besser wäre, wenn du erst einmal ein paar Tutorials oder ein entsprechendes Buch durcharbeitest?
-
hab ich, aber auf klasse in klasse is da nicht drauf eingegangen worden
-
Weil es ja eigentlich auch keine Klasse in Klasse ist. Sowas gibt es in C++ auch und nennt sich 'nested class'. Vielleicht wäre 'Instanz einer Klasse in einer anderen Klasse' ein treffender Titel gewesen. Letztendlich ist das aber auch nix anderes, wie wenn du eine Variable eines primitiven Typs (zB int) in deiner Klasse definierst.
-
das is ja auch kein problem, nur wie greif ich auf methoden der klasse die ich in der andren klasse deklariere zu ...
-
Das wurde ja bereits gezeigt. Fakt ist, dass du ausserhalb einer Klasse nur auf public Member dieser Klasse zugreifen kannst. Oder du legst in dieser Klasse mit friend fest, wer das noch darf. friend ist aber kein Mittel zum Zweck, sondern sollte nur wenn's unbedingt notwendig ist eingesetzt werden. Vorher sollte man sich eher überlegen, ob das Design stimmt.