[closed] declare template as type



  • 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!


  • Mod

    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 neues Vectort Objekt 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, #define ist genau die Art, wie mans nicht macht. Du verunmöglichst damit nämlich eine andere Verwendung des Bezeichners Vector .

    Beschreib doch einfach deinen Fehler vernünftig. Ist das wirklich so wahnsinnig schwierig?


Anmelden zum Antworten