Templates -> Operatoren überschreiben (Pointer geht nicht)
-
Vector3<float> vec(1, 2, 3); Vector3<float> vec2(-7, 8, 9);Wie kommst du denn auf die Idee, new zu nutzen?
In dem Code sind wahrscheinlich noch mehr Fehler, der Code sieht nicht vertrauenserweckend aus. Aus dem Internet zusammenkopiert und angepasst? Nicht böse sein, falls dies nicht der Fall sein sollte, es sieht eben einfach so aus, als hättest du nicht wirklich verstanden, was du da tust. Was irgendwie komisch ist, da hier teilweise durchaus fortgeschrittene Sprachmittel benutzt werden.
edit: Oh, viel zu langsam. Aber ich bin anscheinend mal absolut einer Meinung mit Sone
.
-
du musst die Zeiger erst dereferenzieren, ansonsten werden die in der Klasse definierten operatoren vom Compiler nicht beachtet.
statt:
vec += vec2;so:
*vec += *vec2;@Sone: das mit dem Zeigern im Beispielprogramm ist vermutlich nur zum testen...
-
firefly schrieb:
@Sone: das mit dem Zeigern im Beispielprogramm ist vermutlich nur zum testen...
Was sollte man damit testen wollen? Ich bin da skeptisch. Hier kommen viel zu oft ehemalige Javaprogrammierer vorbei (oder Leute, die von solchen Leuten gelernt haben), die glauben, new wäre in C++ der normale Weg, Objekte zu erstellen. Zumal macht ein new mit dem zugehörigen delete im gleichen Scope keinen Sinn, bringt aber erhebliche technische Nachteile. Und ist komplizierter. Und es ist zusätzlich noch ein potentielles Speicherloch, da Code dazwischen (hier z.B. das zweite new) eine Exception werfen könnte und das delete dann nie ausgeführt wird.
-
Sone schrieb:
Wieso benutzt du überhaupt Heapobjekte, bzw. Zeiger?
Das macht hier überhaupt keinen Sinn.Irgendwie verwirrt mich das, denn wer benutzt Templates - kann aber absolute Grundlagen nicht?
Grundlagen existieren. Anscheinend nicht genug. Genau aus diesem Grund habe ich die Klasse geproggt um die Zusammenhänge und Funktionsweisen des verwendeten Codes zu verstehen.
firefly schrieb:
@Sone: das mit dem Zeigern im Beispielprogramm ist vermutlich nur zum testen...
Du hast es erfasst.

Und der ist nicht aus dem Internet zusammengeschustert :P. Ich habe lediglich meine Kenntnisse bezüglich linearer Algebra aufgefrischt ^^
Gibt es eine Möglichkeit die Klasse so umzuschreiben, dass ich sie für Pointer und Objekte benutzen kann und *´s und &´s zu verwenden?
-
SeppJ schrieb:
firefly schrieb:
@Sone: das mit dem Zeigern im Beispielprogramm ist vermutlich nur zum testen...
Was sollte man damit testen wollen? Ich bin da skeptisch. Hier kommen viel zu oft ehemalige Javaprogrammierer vorbei (oder Leute, die von solchen Leuten gelernt haben), die glauben, new wäre in C++ der normale Weg, Objekte zu erstellen...
Verdammt...erwischt. Ich komme wirklich aus der Java-Ecke ^^
-
aptem schrieb:
SeppJ schrieb:
firefly schrieb:
@Sone: das mit dem Zeigern im Beispielprogramm ist vermutlich nur zum testen...
Was sollte man damit testen wollen? Ich bin da skeptisch. Hier kommen viel zu oft ehemalige Javaprogrammierer vorbei (oder Leute, die von solchen Leuten gelernt haben), die glauben, new wäre in C++ der normale Weg, Objekte zu erstellen...
Verdammt...erwischt. Ich komme wirklich aus der Java-Ecke ^^
Dann musst du dir nur eine verdammte Sache merken: Selber Speicher verwalten ist in C++ völlig Tabu. Daher vermeide jegliches
new.Aber ich bin anscheinend mal absolut einer Meinung mit Sone
.Erstes und letztes mal.

-
Gibt es trotzdem Lösung für mein Problem wo ich die *´s und &´s weglassen kann?
-
aptem schrieb:
Gibt es trotzdem Lösung für mein Problem wo ich die *´s und &´s weglassen kann?
Stackobjekte benutzen? :xmas2:
-
aptem schrieb:
Gibt es trotzdem Lösung für mein Problem wo ich die *´s und &´s weglassen kann?
Das ist keine günstige Frage. * und & kann in C++ je nach Zusammenhang sehr, sehr unterschiedliche Bedeutungen haben. Wenn du wissen willst, wie das ohne Pointer geht: Lass sie einfach weg! Wir sind hier alle verwundert, wieso du sie überhaupt benutzt. Insbesondere sind deine '&' in deinem Programm keine Adressoperatoren, sondern markieren Referenzen. Das ist ganz was anderes und völlig ok.
-
Ok, danke für eure Hilfe und Ratschläge. Dann werde ich in Zukunft (wenn es geht) auf Pointer verzichten.
