problem mit konvertierungskonstruktor
-
hi,
ich bekomme mit diesen beiden Klassen
jede menge Fehler (weiter unten)könnte es vieleicht an der Reihenfolge liegen?
Ist dem Compiler vieleicht coords3D_c noch nicht bekannt?
aber beim konvertierungskonstruktor regt er sich schon über "coords2D_c(" auf
hm...
habt ihr vielleicht eine ahnung?tschao
lukastemplate<typename T> class coords2D_c { T x,y; public: coords2D_c() { x=0; y=0; } //ConversionConstructor coords2D_c(coords3D_c coords) { x=coords.x; y=coords.y; } coords2D_c operator+(coords3D_c coords) { coords3D_c sum; sum.x=x+coords.x; sum.y=y+coords.y; return (sum); } coords2D_c operator-(coords3D_c coords) { coords3D_c diff; diff.x=x-coords.x; diff.y=y-coords.y; return (diff); } }; template<typename T> class coords3D_c:virtual public coords2D_c { T z; public: coords3D_c():coords2D_c() { z=0; } //ConversionConstructor coords3D_c(coords2D_c coords,T z) { x=coords.x; y=coords.y; this.z=z; } coords3D_c operator+(coords3D_c coords) { coords3D_c sum; coords2D_c.operator+(coords2D_c(coords)); sum.z=z+coords.z; return (sum); } coords3D_c operator-(coords3D_c coords) { coords3D_c diff; coords2D_c.operator-(coords2D_c(coords)); diff.z=z-coords.z; return (diff); } };
:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(75) : error C2629: 'class coords2D_c<T> (' unerwartet
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords2D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(75) : error C2334: Unerwartete(s) Token vor '{'; sichtbarer Funktionsrumpf wird übersprungen
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords2D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(80) : error C2061: Syntaxfehler : Bezeichner 'coords3D_c'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords2D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(87) : error C2061: Syntaxfehler : Bezeichner 'coords3D_c'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords2D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(100) : error C2955: 'coords2D_c' : Fuer die Verwendung einer Vorlagenklasse ist eine Vorlagen-Argumentliste erforderlich
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Deklaration von 'coords2D_c'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(130) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords3D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(100) : error C2955: 'coords2D_c' : Fuer die Verwendung einer Vorlagenklasse ist eine Vorlagen-Argumentliste erforderlich
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Deklaration von 'coords2D_c'
c:\daten\gramming\cpp\myprojects\mytest1.8\basicspriteengine.h(108) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords3D_c<float>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(130) : fatal error C1903: Weiterverarbeitung nach vorhergehendem Fehler nicht moeglich; Kompilierung wird abgebrochen.
c:\daten\gramming\cpp\myprojects\mytest1.8\basicspriteengine.h(108) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords3D_c<float>'
Game.cpp
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(75) : error C2629: 'class coords2D_c<T> (' unerwartet
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords2D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(75) : error C2334: Unerwartete(s) Token vor '{'; sichtbarer Funktionsrumpf wird übersprungen
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords2D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(80) : error C2061: Syntaxfehler : Bezeichner 'coords3D_c'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords2D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(87) : error C2061: Syntaxfehler : Bezeichner 'coords3D_c'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords2D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(100) : error C2955: 'coords2D_c' : Fuer die Verwendung einer Vorlagenklasse ist eine Vorlagen-Argumentliste erforderlich
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Deklaration von 'coords2D_c'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(130) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords3D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(100) : error C2955: 'coords2D_c' : Fuer die Verwendung einer Vorlagenklasse ist eine Vorlagen-Argumentliste erforderlich
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Deklaration von 'coords2D_c'
c:\daten\gramming\cpp\myprojects\mytest1.8\basicspriteengine.h(108) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords3D_c<float>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(130) : fatal error C1903: Weiterverarbeitung nach vorhergehendem Fehler nicht moeglich; Kompilierung wird abgebrochen.
c:\daten\gramming\cpp\myprojects\mytest1.8\basicspriteengine.h(108) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords3D_c<float>'
mytest-deffinitions.cpp
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(75) : error C2629: 'class coords2D_c<T> (' unerwartet
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords2D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(75) : error C2334: Unerwartete(s) Token vor '{'; sichtbarer Funktionsrumpf wird übersprungen
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords2D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(80) : error C2061: Syntaxfehler : Bezeichner 'coords3D_c'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords2D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(87) : error C2061: Syntaxfehler : Bezeichner 'coords3D_c'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords2D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(100) : error C2955: 'coords2D_c' : Fuer die Verwendung einer Vorlagenklasse ist eine Vorlagen-Argumentliste erforderlich
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Deklaration von 'coords2D_c'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(130) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords3D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(100) : error C2955: 'coords2D_c' : Fuer die Verwendung einer Vorlagenklasse ist eine Vorlagen-Argumentliste erforderlich
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Deklaration von 'coords2D_c'
c:\daten\gramming\cpp\myprojects\mytest1.8\basicspriteengine.h(108) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords3D_c<float>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(130) : fatal error C1903: Weiterverarbeitung nach vorhergehendem Fehler nicht moeglich; Kompilierung wird abgebrochen.
c:\daten\gramming\cpp\myprojects\mytest1.8\basicspriteengine.h(108) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords3D_c<float>'
RasterGameEngine.cpp
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(75) : error C2629: 'class coords2D_c<T> (' unerwartet
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords2D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(75) : error C2334: Unerwartete(s) Token vor '{'; sichtbarer Funktionsrumpf wird übersprungen
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords2D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(80) : error C2061: Syntaxfehler : Bezeichner 'coords3D_c'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords2D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(87) : error C2061: Syntaxfehler : Bezeichner 'coords3D_c'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords2D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(100) : error C2955: 'coords2D_c' : Fuer die Verwendung einer Vorlagenklasse ist eine Vorlagen-Argumentliste erforderlich
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Deklaration von 'coords2D_c'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(130) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords3D_c<T>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(100) : error C2955: 'coords2D_c' : Fuer die Verwendung einer Vorlagenklasse ist eine Vorlagen-Argumentliste erforderlich
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(95) : Siehe Deklaration von 'coords2D_c'
c:\daten\gramming\cpp\myprojects\mytest1.8\basicspriteengine.h(108) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords3D_c<float>'
c:\daten\gramming\cpp\myprojects\mytest1.8\basics.h(130) : fatal error C1903: Weiterverarbeitung nach vorhergehendem Fehler nicht moeglich; Kompilierung wird abgebrochen.
c:\daten\gramming\cpp\myprojects\mytest1.8\basicspriteengine.h(108) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'coords3D_c<float>'
Fehler beim Ausführen von cl.exe.mytest.exe - 28 Fehler, 0 Warnung(en)
-
lukas s schrieb:
hi,
ich bekomme mit diesen beiden Klassen
jede menge Fehler (weiter unten)Nach hunderten von Änderungen kompiliert hier das folgende:
g++ -c lukas.C
template <typename T> class coords3D_c; template<typename T> class coords2D_c { T x,y; public: coords2D_c() { x=0; y=0; } //ConversionConstructor coords2D_c(coords3D_c<T> coords) { x=coords.x; y=coords.y; } coords2D_c operator+(coords3D_c<T> coords) { coords3D_c<T> sum; sum.x=x+coords.x; sum.y=y+coords.y; return (sum); } coords2D_c operator-(coords3D_c<T> coords) { coords3D_c<T> diff; diff.x=x-coords.x; diff.y=y-coords.y; return (diff); } }; template<typename T> class coords3D_c:virtual public coords2D_c<T> { T z; public: coords3D_c(): coords2D_c<T>() { z=0; } //ConversionConstructor coords3D_c(coords2D_c<T> coords,T z) { this->x=coords.x; this->y=coords.y; this.z=z; } coords3D_c operator+(coords3D_c<T> coords) { coords3D_c<T> sum; sum.coords2D_c<T>::operator+(coords2D_c<T>(coords)); sum.z=z+coords.z; return (sum); } coords3D_c operator-(coords3D_c<T> coords) { coords3D_c<T> diff; diff.coords2D_c<T>::operator-(coords2D_c<T>(coords)); diff.z=z-coords.z; return (diff); } };
-
uups da hab ich wohl die <T> vergessen
jetzt funktioniert's
danke für die mühe
aber du hattest mir ja nicht gleich alles ausbessern müssentschao
lukas