Objektorientierte Klassenstruktur für Zeichenprogramm - Änfängerproblem
-
gamer8o4 schrieb:
zurückgibt und eine Referenz als Parameter nimmt
warum soll man erst ein neues object von CColor erstellen, wenn man auch einfach ein vorhandenes nehmen kann? anders sehe der code so aus und das ist ineffizienter:
CColor c = getColor(100,10,75,1.0f);Oh aha. Also gibt es in deiner Welt kein inlining und RVO? Hast du gebnchmarkt? compilierst du mit simpelsten optimierungen? Machen das coole Kids heute so?
-
mireiner schrieb:
Eine Basisklasse mit einem Element "Baukasten", von dem zur Laufzeit nur 1 Instanz erzeugt wird und alle von dieser Basisklasse abgeleiteten Klassen können auf einfachem Wege auf diesen EINEN Baukasten der Basisklasse zugreifen.
Gibt es in C++ Sprachelemente die so etwas möglich machen?
Funktioniert das womöglich, wenn das Element "Baukasten" in der Basisklasse als statisch deklariert wird?
klingt nach globalen variablen (sehr schlechter stil) oder Singletons (wurde mir heute gesagt, dass man die auch nicht zu oft verwenden sollte)

mit static würde theoretisch auch funktionieren, aber naja, das könnte man in diesem fall als schlechte singleton implementierung oder auch als komische globale variable bezeichnen
-
otze schrieb:
gamer8o4 schrieb:
zurückgibt und eine Referenz als Parameter nimmt
warum soll man erst ein neues object von CColor erstellen, wenn man auch einfach ein vorhandenes nehmen kann? anders sehe der code so aus und das ist ineffizienter:
CColor c = getColor(100,10,75,1.0f);Oh aha. Also gibt es in deiner Welt kein inlining und RVO? Hast du gebnchmarkt? compilierst du mit simpelsten optimierungen? Machen das coole Kids heute so?
okay ich gebe auf

-
[quote="mireiner"]Mir ist gerade noch eine Idee gekommen, weiß aber nicht, ob sie möglich ist?
Es ist möglich.
[quote="mireiner"]Eine Basisklasse mit einem Element "Baukasten", von dem zur Laufzeit nur 1 Instanz erzeugt wird und alle von dieser Basisklasse abgeleiteten Klassen können auf einfachem Wege auf diesen EINEN Baukasten der Basisklasse zugreifen.
ALso eine globakle Variable Baukasten.
mireiner schrieb:
Gibt es in C++ Sprachelemente die so etwas möglich machen?
Ja, tausende.
Am einfachsten, Du machst eine globale Variable, wenn Du eine meinst.mireiner schrieb:
Funktioniert das womöglich, wenn das Element "Baukasten" in der Basisklasse als statisch deklariert wird?
Klar. Aber warum dafür Vererbung anstrengen? Vererbung ist doch der echt nichtnaheliegende Weg, eine globale Variable zu deklarieren.
-
Hallo Nexus!
War nur so eine Idee von mir. Wenn das wirklich möglich ist, hört sich das in meinen Ohren erst mal als die ultimative Lösung für mein Problem an.
Das werde ich dann gleich einmal anhand eines einfachen Praxisbeispiels ausprobieren. Danke auch für den Hinweis auf den Singeton Pattern Thread, davon habe entfernt schon einmal etwas gehört.
Grüße,
Bernd
-
Klar. Aber warum dafür Vererbung anstrengen? Vererbung ist doch der echt nichtnaheliegende Weg, eine globale Variable zu deklarieren.
Mmh, ich dachte ein statisches Element einer Basisklasse wäre vielleicht besser gekapselt als ein globales Objekt. Da es sich ja um sehr viele (statische) Grafikresource-Elemente handelt, wäre der Zugriff, für die von dieser Basisklasse abgeleiteten Klassen, auch denkbar einfach...
-
mireiner schrieb:
die ultimative Lösung für mein Problem
Davon habe ich vielleicht eine im Jahr.
Sonst immer habe ich etliche sehr gute Lösungen und muss abwägen, welche wohl vermutlich mich langfristig nicht umbringt. Wer abschätzen kann, was einen nicht innerhalb eines Tages umbringt, ist ein Programmierer; wer abschätzen kann, was einen nicht in einer Woche umbringt, ist ein Entwickler; wer 3 Monate schafft, ist ein Software-Architekt; und wer ein Jahr schafft, ist ein Angeber.
-
volkard schrieb:
mireiner schrieb:
die ultimative Lösung für mein Problem
Davon habe ich vielleicht eine im Jahr.
Sonst immer habe ich etliche sehr gute Lösungen und muss abwägen, welche wohl vermutlich mich langfristig nicht umbringt. Wer abschätzen kann, was einen nicht innerhalb eines Tages umbringt, ist ein Programmierer; wer abschätzen kann, was einen nicht in einer Woche umbringt, ist ein Entwickler; wer 3 Monate schafft, ist ein Software-Architekt und wer ein Jahr schafft, ist ein Angeber.Sehr schön formuliert.
Leider habe ich nur selten den wirklichen Überblick, über die Möglichkeiten, die mir die Sprachmittel zur Verfügung stellen. Denn als Anfänger und mäßig begabter Hobbyprogrammierer bewege ich mich allzu oft nur entlang der bisher vertrauten und bewährten Trampelpfade.