Fehler Virtual Template, Interfaces
-
Hallo Pros,
ich habe versucht, eine virtuelle Klasse in ein template einzubauen. Das mag VC++ wohl gar nicht und wirft folgende Fehlermeldung:
template <class T> class TestKram : iDrawable
...
template <class T> TestKram<T>::draw()
In iDrawable.h:
virtual void draw();
Folgende Fehlermeldung erscheint:
fatal error C1001: INTERNER COMPILERFEHLER
(Compilerdatei 'msc1.cpp', Zeile 2701)Gut, eine Template Klasse ist ja im Prinzip keine Klasse, sondern nur eine Schablone so weit ich das verstanden hab'. Eventuell geht es ja deswegen nicht. Oder muss ich draw auch als Template definieren?
Sorry falls dumm,
Ein Anfaenger
-
Zeig mehr Code. Die Fehlermeldung ist absolut unbrauchbar und das was du von Code zeigst ist korrekt.
-
welchen vc benutzt du?
-
VS .Net 2003
Macht es überhaupt Sinn in Templates zu implementieren?
Quellcode poste ich später, muss dringend ins Bett.
Da es allerdings nur ein minimaler Test war, gibts da auch nicht viel mehrN8!
-
Grundsätzlich sind virtuelle Funktionen in Klassentemplates schon erlaubt. Was nicht erlaubt ist, sind virtuelle Membertemplates (obwohl die gelegentlich auch ganz praktisch sein könnten
), aber das hast du hier ja nicht.
-
ein paar Kleinigkeiten solltest du ändern:
[cpp]
template <class T>
class TestKram : public iDrawabletemplate <class T>
virtual void
TestKram<T>::draw()
[/cpp]Es geht natürlich auch protected, aber Standard wäre sonst private, was du sicherlich nicht willst.
Der MSVC nimmt "int" als Standard für Funktionen/Member (auch wenn dies nicht dem C++ Standard entspricht).