Ich bekomme die Fehlermeldung "class Hunde' has no member named 'g' cout<<Rex.g;".
Was auch sinn macht, denn deine Klasse "Hunde" hat auch keinen "Member"(Klassenvariable) mit dem Bezeichner "g", der Bezeichner heißt "groese". Hier gilt wie immer, der Compiler ist sehr dumm und weiß nicht, was du machen willst. Er macht nur das, was er auch versteht.
Wenn ich allerdings schreibe Rex.groese, bekomme ich die Fehlermeldung das groese private ist
Auch das ist logisch, denn du hast "groese" als "private" deklariert:
Code: Alles auswählen
[...]
private:
int groese;
int laenge;
int gewicht;
};
Die "private", "protected" und "public" Spezifizierer haben den sinn, die Erreichbarkeit von Variablen und Funktionen einzuschränken. Wenn du eine Variable oder Funktion als "private" kennzeichnest, sagst du deinem Compiler, dass diese Variable nur innerhalb der Klasse verwendet werden soll und damit von außen nicht erreichbar ist. Dies ist wichtig, denn so schützt du dich vor dich selber.
Wenn du auf die Variable zugreifen willst hast du verschiedene Optionen. Entweder kennzeichnest du die Variable als "public", damit zugreifbar von außen
Code: Alles auswählen
[...]
public:
int groese;
private:
int laenge;
int gewicht;
};
oder du definierst Funktionen zum Abrufen oder setzen der Variable(getter und setter):
Code: Alles auswählen
class Hunde
{
public: //Klasse Hund soll Größe, Länge und Gewicht beinhalten.
Hunde(int Grose, int Laenge, int Gewicht){
groese = Grose;
laenge = Laenge;
gewicht = Gewicht;
}
int getGroese(){return groese;}
void setGroese(int g){groese = g;}
private:
int groese;
int laenge;
int gewicht;
};
Mehr dazu hier:
https://www.proggen.org/doku.php?id=cpp:class:private
Redundanz macht wiederholen unnötig.
quod erat expectandum