Zugriff auf vererbte variablen
-
und wenn du keinen der drei brauchst, dann keinen.
btw., es geht hier um den kopierkonstruktor, den (kopier-)zuweisungsoperator und den destruktor.
in diesem fall, machen die compiler-generierten versionen genau das, was du willst.
-
#include <string> namespace Buildings { class Building { protected: std::string m_date; public: Building(std::string const& date("")) : m_date(date) {} friend std::ostream& operator << (std::ostream& out, Building const& data) { return out << "Erbaut am " << data.m_date; } public: std::string const& get_date() const { return m_date; } }; class House : public Building { unsigned int m_walls; public: House(const unsigned int walls(0), std::string const& date("")) : Building(data), m_walls(walls) {} friend std::ostream& operator<<(std::ostream& Stream, House const & data) { return out << "Das Haus hat " << data.m_walls << " Wände und wurde am " << data.m_date << " erbaut!"; } public: const unsigned int get_walls() const { return m_walls; } }; }; // Buildings
-
diese doppelte "public" in der Klassen Definition ist nur fürs Aussehen oder ?
-
Foxx90 schrieb:
diese doppelte "public" in der Klassen Definition ist nur fürs Aussehen oder ?
Du kannst prinzipiell vor jeden Bestandteil erneut die Sichtbarkeit festlegen, daher macht dies nichts aus (Manche Codegeneratoren machen dies z.B.).
cu André
-
Ok alles klar danke
Gruß Chris
-
queer_boy schrieb:
generell gilt ist es schlecht, namen mit underscores beginnen zu lassen (besser gar nicht erst damit anfangen) und elementvariablen von klassen
protectedzu halten, ist auch kein guter stil.Ansichtssache. So lange man sich nicht im globalen Namensraum rumtreibt und der zweite Buchstabe kein Großbuchstabe ist erlaubt der Standard das. Ich finds hübscher als mPups.
-
was sollen denn die friends in der klasse?
-
Dadurch hat er verhindert, die operatoren << >> außerhalb der Klasse zu definieren bzw. deklarieren...
-
.....
ps: wir habens probiert nach vielen fehlern.. es geht.. hmm
na, gut zu wissen.
-
ging mir auch so...