[closed] declare template as type
-
Pria schrieb:
typedef Vector Vectort<float>;Meintest du
typedef Vectort<float> Vector;?
-
Ist es so gedacht? :
typedef vector<float> VectorT;
VectorT v;
for(int i=0; i<10; i++) v.push_back((float)i);
for(int i=0; i<10; i++)
cout << "Wert=" << v[i] << endl;
-
Nein, es handelt sich tatsächlich um eine mathematische Struktur
template<typename T> struct Vectort { T X; T Y; T Z; ... }Und um mir kopierarbeit zu sparen und datenhaltung zu vereinfachen der remplatetype. um jetzt aber nicht jedes mal vectort<float> schreiben zu müssen würde ich gerne per typedef für die gängigeren Datentypen float, double ein kürzel definieren. wie oben beschrieben ...
-
Lies nochmals seldons Beitrag.
-
nichts desto trotz selber fehler
-
cooky451 schrieb:
Poste den Code der den Fehler produziert auf ideone.
-
lies oben!
-
Pria schrieb:
lies oben!
Meinst du, du wirst mehrmals aufgefordert, Informationen zu liefern, obwohl du ausreichend Informationen geliefert hast?
-
Vector.Zero ist kein gültiger Ausdruck, weil Vector ein Typ ist (kein Objekt). Ich habe jetzt keine Möglichkeit zu wissen, was Zero in Vector sein soll, weil mir der entsprechende Code fehlt, also kann ich nur wild raten: Sofern Zero der Form
template<typename T> struct Vectort { ... static Vectort Zero; };deklariert ist, ist die richtige Syntax
Vector v = Vector::Zero;Ich bin mir übrigens ziemlich sicher, dass die Fehlermeldung nicht von dem Code stammt, wie er da steht, da der Ausdruck Vectort.Zero, der in der Fehlermeldung genannt wird, im Code nicht vorkommt. Ich habe jetzt noch ein letztes Mal versucht, wild hilfreiches Zeug zu raten, aber ich mache das nicht mehr, bis eine vernünftig formulierte Frage mit ausreichend Informationen kommt. Das bedeutet
1. Eine klare Beschreibung dessen, was du vorhast, und woran es hapert
2. Ein kurzes Codebeispiel (< 50 Zeilen), das ich direkt in einen Compiler werfen kann, um den Fehler zu reproduzieren (d. h. ein Testcase)
3. Die ganze Fehlermeldung, so wie sie von deinem Compiler für dieses Beispiel ausgeworfen wird.Du bittest hier um Hilfe, und wir haben keine Bringschuld. Verhalte dich dementsprechend.
-
Mutmaßung:
Zero ist ein statisches Element der Klasse
Vectort, und du möchtest ein neuesVectortObjekt mit dem Zero Objekt initialisieren?Vielleicht geht´s so:
Vectort v = Vectort::Zero;
-
ich hab die zeile in
#define Vector Vectort<float>geändert dann gings komischerweise
-
Ja,
#defineist genau die Art, wie mans nicht macht. Du verunmöglichst damit nämlich eine andere Verwendung des BezeichnersVector.Beschreib doch einfach deinen Fehler vernünftig. Ist das wirklich so wahnsinnig schwierig?