Declaration terminated incorrectly
-
Hallo alle,
seit kurzem versuche ich erste Schritte in templates und bekomme ein Problem nicht gelöst. Ist aus einem Prog-Beispiel.
template <const int id> struct My_Type { }; template <typename T> class Other_Type { public: }; template <const int id> class Other_Type<My_Type<id> > // Compiler Fehler: Type 'Other_Type<T>' may not be defined here { protected: };Hat jemand Rat?
L. Grüsse
-
Dein Beispiel funktioniert bei mir. Deine Fehlermeldung deutet eigentlich auf ein vergessenes Semikolon hin. Ist das wirklich 1:1 der Code, der nicht funktioniert?
-
Lediglich die Namen sind abgewandelt (das aber gewissenhaft
)Benutze für dies Example, der Code ist wesentlich länger, den BCB3.
BCB2009 wirft noch mehr Fehler.Hab die Zeilen in den Header einer Formularanwendung vor der Klasse des Formulars stehen.
Ist in den Projektoptionen des BCB unter C++ etwas zu beachten, oder welchen Compiler/Programm benutzt du?
Ja, und Include-Dateien sind
#include <iostream> #include <vector>
-
Das Problem mit dem Templates ist halt, dass viele ältere Compiler die nicht gut unterstützen und somit manchmal komische Fehler bringen können.
Probier dieses Beispiel einmal getrennt vom restlichen Projekt unter den selben Einstellungen zu compilieren. (oder ggf. halt Einstellungen anpassen). Könnte schon sein, dass das noch gar nicht unterstützt wird.
Ist denn das der einzige Fall, wo du templates einsetzt, oder funktioniert es nur gerade hier nicht?
-
Viel mit templates hab ich noch nicht geschrieben. Waren bisher kleine Klassen ohne aufwendigen Strukturen/Funktionen.
Hmm,
hat die Fehlermeldung, die der BCB ausgibt, eine AnsatzmöglichkeitBCB-Fehlermeldung schrieb:
Klassen- und Aufzählungstypen dürfen nicht in einem Rückgabetyp einer Funktion, als Argumententyp einer Funktion,
als Umwandlungsoperator oder als Cast-Typ spezifiziert sein.Definieren Sie den gegebenen Typen, bevor Sie ihn in diesem Kontext verwenden.
Also Other_Type<T>. Wie kann ich den vorher definieren. Wenns da keine Change gibt, muss ich echt den Compiler checken. Aber wie gesagt,
im BCB2009, den ich noch an Bord hab, bekomme ich noch mehr Errors bei dem Schnippel da oben.Danke schon mal