Geht das eleganter?
-
Die Liste der Beleidigungen/falschen Vorwürfe wird immer länger. Hallo Leseverständnis? Ich habe NIE gesagt hier sind ALLE nur arrogante Arschlöcher. Ich habe gesagt hier gibt es verdammt viele davon. Und dabei bleibe ich auch. Man nimmt void* => ist ein Noob. Man findet die "Lösungen" nicht elegant => man ist ein Noob und eine Diva usw. usw. Das ist Arroganz pur (und ich hasse Arroganz - vor allem da sie nie gerechtfertigt ist).
Ich wollte einfach wissen, ob man auf elegante (=wenig,schlichter Code) Weise den void* austauschen kann. Was kommen für Antworten? Double Dispatching Pattern und 50 Zeilen langer Code (der dennoch so noch nicht verwendbar ist), für den ich boost installieren muss und der private Vererbung, reinterpret casts und smart pointer verwendet - das alles um 3 Zeilen Code zu ändern.) Aber jaja, ich weiß schon. Die Lösung war grandios und weil ich das nicht benutze bin ich ein C++ N00b

Ich habe gefühlte 20 mal geschrieben, dass ich nicht will das Foo eine Template Klasse sein soll. Und jetzt bringst du wieder Code, der aus Foo eine Template Klasse macht.

Wie ich bereits gesagt habe kenne ich mich recht gut mit C++ aus; der einzige Bereich wo ich wenig Erfahrung habe sind Templates. Doch so eine kleine Templateklasse anlegen schaff ich dann doch auch noch;)Warum ich es nicht will, dass Foo ein Template wird? Ganz einfach, weil es nicht passt. Die echte Foo Klasse heißt "Terrain" und ist eine recht komplexe Klasse, die sich mit Terrain Rendering beschäftigt. Und nur weil ich jetzt in 4 Zeilen von der Klasse (mit weit über 1000 Zeilen) etwas mit einem Datenarray mache, das 2 oder 3 verschiedene Typen hat, rechtfertigt das nicht, dass gleich die ganze Klasse ein Template hat. Ein Terrain<int> oder Terrain<float> macht einfach keinen Sinn. Es gibt kein float-Terrain oder int-Terrain, es gibt einfach nur ein Terrain.
Übrigens habe ich vorhin in einem großen anderen (amerikanischen) Programmierforum exakt die selbe Frage gestellt. Interessanterweise hat nicht ein einziger gesagt, dass sie mein Problem nicht verstehen. Im 3. Posting wurde dann bereits ein konkretes Beispiel gezeigt (statische Template Funktion; die Klasse selber ist kein Template). Der void* Code wurde (in diesem Fall) übrigens auch als absolut zulässige Lösung empfunden.
-
Glückwunsch, dann hast du deine Lösung ja und wir alle brauchen uns nicht weiter mit dem Thema rumzuquälen. Oder mit irgendwelchen "arroganten Arschlöchern" (aus wessen Sicht jetzt auch immer).