Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

09.08.2014, 15:34

Zitat

PointF (auch eine der Childklassen) z.B. hat noch ein paar andere Methoden, die nichts in PointBase zu suchen haben.

C-/C++-Quelltext

1
2
3
4
5
    PointBase<T>& operator+(const PointBase<T>& rhs)
    {
        m_X += rhs.m_X; m_Y += rhs.m_Y;
        return *this;
    }


Das ist aber nicht du Funktionalität, die ich mir vorstelle! Bei operatoren +, -, ... soll das Objekt an sich nicht verändert werden, sondern nur eine Kopie erstellt und diese verändern.
Und da kommen wir wieder zum Problem, das wir den Typ nicht kennen.

12

09.08.2014, 15:44

Du kannst den operator+ beliebig befüllen. Das war nur ein Beispiel.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
template<typename T> class PointBase
{
public:
    PointBase<T>& operator+(const PointBase<T>& rhs)
    {
        return PointBase<T>(m_X + rhs.m_X, m_Y + rhs.m_Y);
    }
};

Bei einer Addition übergibst du das PointBase<T> dann wieder dem cast-copy constructor PointF::PointF(const PointBase<float>& baseF) und hast am Ende wieder ein PointF Objekt

C-/C++-Quelltext

1
2
3
4
5
PointF p1, p2;
p1 = p1 + p2;
/* entspricht */ p1 = PointF(p1 + p2);
/* entspricht */ p1 = PointF(p1.operator+(p2));
/* entspricht */ p1 = PointF(p1.operator+(PointBase<float>(p2)));
EnvisionGame(); EnableGame(); AchieveGame(); - Visionen kann man viele haben. Sie umzusetzen und auf das Ergebnis stolz zu sein ist die eigentliche Kunst.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »iSmokiieZz« (09.08.2014, 15:49)


13

09.08.2014, 15:53

Hmm, ok. Dann muss ich wohl damit leben, das ich bei "auto p = p1 + p2;" erstmal mit nem PointBase<T> weiter arbeite.
Vielen Dank, hast mir sehr geholfen ;)

mfg

14

09.08.2014, 18:21

Das ist nicht Sinn der Sache.
PointF (auch eine der Childklassen) z.B. hat noch ein paar andere Methoden, die nichts in PointBase zu suchen haben.


Mich würde auch hier mal interessieren welche Methoden in der Baseklasse nichts zu suchen haben.

Bin der Meinung so wie du aktuell deine Klassen gestaltet hast, ist das schlechtes Design.

Gruß Koschi
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

15

09.08.2014, 18:29

Ja, da stimme ich dir zu ;)
Hab ja grade mal wieder gemerkt, das ich Probleme bekomme.
Bin gerade dabei, dass Ganze umzuschreiben. Bisher sieht das ganz gut aus ;)

Werbeanzeige