friend
-
hab nen problem mit klassen ^^
class Raumschiff { public: Raumschiff() { fliegen(); schiessen(); } void fliegen() { std::cout << "Fliegen" << std::endl; } void schiessen() { std::cout << "Schiessen" << std::endl; } }; class Bomber : public Raumschiff { public: verteidigen x; Bomber() { bomben(); verteidigen(); } void bomben() { std::cout << "Bomben abwerfen" << std::endl; } }; class Defenser : public Raumschiff { public: friend class Bomber; Defenser() { verteidigen(); } void verteidigen() { std::cout << "Verteidigen" << std::endl; } };wie kann ich nun der klasse bomber die funktion verteidigen noch durch friend(!!) adden?
Mfg
-
Wenn beide Unterklassen die Funktion brauchen, warum deklarierst du sie dann nicht in der Basisklasse?
-
Badestrand schrieb:
Wenn beide Unterklassen die Funktion brauchen, warum deklarierst du sie dann nicht in der Basisklasse?
weils noch mehrere unterklassen gibt, die alles aus der basisklasse und ein bisschen von anderen klassen haben.
-
Tut mir Leid, aber das was du da vorhast, funktioniert so nicht..
-
Schreib dir doch en Interface Defensible, von dem Bomber und Defenser erben.
-
class CanDefend { public: void verteidigen() { .... } }; class Raumschiff { .... }; class Bomber : public Raumschiff, CanDefend { ..... };So gehts.
rya.
-
Du solltest CanDefend::verteidigen() pur virtuell machen und außerdem einen virtuellen Destruktor hinzufügen.