magic number in klassen zum sortieren
-
CStoll schrieb:
.filmor schrieb:
template <typename T> friend class RealBase<N>;Bist du sicher, daß das stimmt? Wenn schon, mußt du dort ein "template<int N>" verwenden

std::set<Base*> mySet; mySet.push (new Derived1); mySet.push (new Derived2);Fast richtig - das heißt "insert()" und nicht "push()".
Korrigiert.
CStoll schrieb:
*grübelt* Ich bin mir nicht sicher, aber man könnte die Magic Numbers über statische Variablen automatisch vergeben, dann braucht sich der Anwender nicht darum zu kümmern, welche "RealBase<>" Spezialisierungen schon vergeben sind.
Irgendwie stelle ich mir das ohne RTTI ziemlich schwer vor (und auch mit der wird es wahrscheinlich ziemlich kompliziert sein). Und weil ich RTTI nicht mag, hab ichs halt (zum Teil) auf die Compilezeit geschoben. Das war die erste "Lösung" die mir einfiel.
-
danke euch beiden für eure ansatze.

filmors idee finde ich net schlecht, hat zwar noch einen grossen nachteil wie cstoll schon erwähnt hat, aber ich denke ich habe schon eine idee.
mit einem statischen "id creator" habe ich es ansatzweise probiert und bin kläglich gescheitert.
RTTI scheidet bei mir von vorne herein immer aus.
-
Dann lass uns teilhaben, wenn du eine Idee hast. So etwas kann man immer mal gebrauchen.
-
.filmor schrieb:
Dann lass uns teilhaben, wenn du eine Idee hast. So etwas kann man immer mal gebrauchen.
werde ich auf jeden fall tun wenn sie soweit.
-
int Base::getMagicNumber(){return *(int*)this;}
-
In Modern C++ Design verwendet der Autor sowas für seine AbstractFactory, hat das auch recht elegant gelöst mit dem statischen ID Feld, kannst ja mal in die Loki-Lib schauen.
-
miller_m schrieb:
.filmor schrieb:
Dann lass uns teilhaben, wenn du eine Idee hast. So etwas kann man immer mal gebrauchen.
werde ich auf jeden fall tun wenn sie soweit.
gestern abend hatte ich doch keine zeit meine idee zu testen.
zur erklärung:
meine gestrige idee war das der user eine typliste übergeben könnte, ich diese iteriere und eine konstate für jeden typ setzte.volkard schrieb:
int Base::getMagicNumber(){return *(int*)this;}
-
Mach's komplett anders.
-
Nur eine Idee, die mir über's Wochenende gekommen ist: Warum verwendest du nicht typeid, um deine Klassen zu identifizieren?
-
miller_m schrieb:
RTTI scheidet bei mir von vorne herein immer aus.