000
31.10.2004, 13:33 Uhr
Lensflare
|
Hallo.
ich lerne gerade c++, dh was es mit den klassen und so auf sich hat. Ich hab im folgenden code zwei klassen erstellt, "Punkt" und "Kreuz":
C++: |
class Punkt { public: int GetX(); int GetY(); void SetX(int setX); void SetY(int setY); private: int itsX; int itsY; };
class Kreuz { public: Punkt GetLocation(); Punkt GetSize(); void SetLocation(Punkt setLocation); void SetSize(Punkt setSize); int GetColor(); void SetColor(int r, int g, int b); void DrawIn(BITMAP *setTarget); private: Punkt itsLocation; Punkt itsSize; int itsColor; };
int Punkt::GetX() { return itsX; }
int Punkt::GetY() { return itsY; }
void Punkt::SetX(int setX) { itsX = setX; }
void Punkt::SetY(int setY) { itsY = setY; }
Punkt Kreuz::GetLocation() { return itsLocation; }
Punkt Kreuz::GetSize() { return itsSize; }
void Kreuz::SetLocation(Punkt setLocation) { itsLocation = setLocation; }
void Kreuz::SetSize(Punkt setSize) { itsSize = setSize; }
int Kreuz::GetColor() { return itsColor; }
void Kreuz::SetColor(int r, int g, int b) { itsColor = makecol(r,g,b); }
void Kreuz::DrawIn(BITMAP *setTarget) { line(setTarget, itsLocation.GetX()-itsSize.GetX()/2, itsLocation.GetY(), itsLocation.
GetX()+itsSize.GetX()/2, itsLocation.GetY(), itsColor); line(setTarget, itsLocation.GetX(), itsLocation.GetY()-itsSize.GetY()/2, itsLocation.
GetX(), itsLocation.GetY()+itsSize.GetY()/2, itsColor); }
|
Wie man sieht, benutzt "Kreuz" die "Punkt"-Objekte, um aus ihnen ein Kreuz zu basteln (das
dann ein Mauszeiger werden soll)
Im nächsten code(fragment) habe ich zwei objekte von der klasse "Punkt" erstellt (also zwei
punkte), und übergebe diese an das "Kreuz"-Objekt über die Methode SetLocation()
C++: |
Punkt MausZeigerPosition; Punkt MausZeigerGroesse; MausZeigerGroesse.SetX(20); MausZeigerGroesse.SetY(20);
Kreuz Mauszeiger; Mauszeiger.SetSize(MausZeigerGroesse);
while(1) { MausZeigerPosition.SetX(mouse_x); MausZeigerPosition.SetY(mouse_y); Mauszeiger.SetLocation(MausZeigerPosition); Mauszeiger.SetColor(255,128,0); Mauszeiger.DrawIn(doubleBuffer); }
|
Und nun die Frage: Es muss doch sicherlich irgendwie möglich sein, die Position (Location) des mauszeigers
anzugeben, OHNE dafür einen Punkt zu erstellen. Die position wird doch sowieso in form eines punktobjekts in dem Mauszeigerobjekt selbst
gespeichert.
Um es verständlicher zu machen: Wenn ich die X und Y Koordinaten des mauszeigers haben will, schreibe ich
C++: |
Mauszeiger.GetLocation().GetX(); Mauszeiger.GetLocation().GetY();
|
und das selbe brauche ich für das setzen der koordinaten... nur wie schreibe ich das? Nochmal: Ich will es vermeiden, für jedes kreuzobjekt zwei punkte anlegen zu müssen.
Achja... ich könnte natürlich "itsLocation" auf public setzen, aber ich hab gelesen, dass
man das nie tun sollte und immer über Methoden darauf zugreifen sollte.
Danke schonmal für die Vorschläge -- Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten. (Emerson Pugh Trost) |