Zeiger in Klassen - public
-
Hi zusammen,
ich bin grad ein wenig am rumwursteln mit Zeiger und Klassen und hab jetzt folgendes Beispiel:
#include <iostream.h>
#include <conio.h>class qm
{
float laenge, breite, ergebnis;
void calc ();
void calc2 ();
public:
float *pHoehe;
qm(float l, float b, float h);
void get ();
};qm::qm(float lae=0, float bre=0, float hoe=0)
{
laenge=lae;
breite=bre;
pHoehe= new float(hoe);
ergebnis=0;
}void qm::calc ()
{
ergebnis=laenge*breite;
}void qm::calc2 ()
{
ergebnis=*pHoehe*laenge*breite;
}void qm::get ()
{
qm::calc();
cout << endl << "l " <<laenge << endl;
cout << endl << "b "<<breite << endl;
cout << endl << "e "<<ergebnis << endl;
qm::calc2();
cout << endl << "h " <<*pHoehe <<endl;
cout << endl << "l " <<laenge << endl;
cout << endl << "b "<<breite << endl;
cout << endl << "e "<<ergebnis << endl;}
int main ()
{qm test(10,10,10);
test.get();
cout << "ttt " << test.(*pHoehe);getch();
}Was nun nicht klappt ist die Zeile
cout << "ttt " << test.(*pHoehe);
aber ich verstehe nicht warum.
Denn
cout << "ttt " << test.pHoehe;
gibt mir die Adresse von dem Zeiger aus, aber warum klappt das
dereferenzieren ( oder wie man dsa auch immer nennt/schreibt ) nicht ?!?Vielen Dank für euren Rat.
Gruß
alligator
-
cout<< *(test.pHoehe);
Aber die Klammern können wegbleiben, also
cout<< *test.pHoehe;
-
Und wie wär's mit:
cout << test->pHoehe;
???
Noch ein kleiner Tipp:
Es ist kein guter Stil, Datenelemente einer Klasse als public zu deklarieren.
Besser, du machst sie private und greifst dann mit einer public-Funktion auf sie zu.
-
Original erstellt von cerebrum:
**Und wie wär's mit:cout << test->pHoehe;
???
Noch ein kleiner Tipp:
Es ist kein guter Stil, Datenelemente einer Klasse als public zu deklarieren.
Besser, du machst sie private und greifst dann mit einer public-Funktion auf sie zu.**Den -> Operator würde man benutzen wenn 'test' selber ein Zeiger währe.
Da müsste man sonst nämlich schreiben (*test).bla.
-
Ups, sorry, mein Fehler