Hallo zusammen,
ich bin mir nicht sicher, ob ich etwas versuche, das prinzipiell nicht
geht.
Sinngemäß geht es um das, was im Betreff steht:
>class A : public myInterface_I, public clasTemp<myInterface_I>
Dabei habe ich das Problem, dass A abstract bleibt, obwohl clasTempl
alle Methoden von myInterface_I implementiert, auch die Signaturen
stimmen - hab ich x-Mal geprüft.
Ich fürchte, ich habe noch ein falsches Verständnis von Klassentemplates
- so ganz scheint es nicht dem search and paste Ansatz zu folgen?
Versuch mal in "A" mit "using" die betreffenden Funktionen aus
"clasTemp" sichtbar zu machen. Oder lass clasTemp einfach vom Interface
ableiten.
Zoukrates schrieb:> so ganz scheint es nicht dem search and paste Ansatz zu folgen?
Nein, definitiv nicht.
Zoukrates schrieb:> ich bin mir nicht sicher, ob ich etwas versuche, das prinzipiell nicht> geht.> Sinngemäß geht es um das, was im Betreff steht:>>class A : public myInterface_I, public clasTemp<myInterface_I>> Dabei habe ich das Problem, dass A abstract bleibt, obwohl clasTempl> alle Methoden von myInterface_I implementiert, auch die Signaturen> stimmen - hab ich x-Mal geprüft.
Das heißt, myInterface_I hat rein virtuelle Memberfunktionen? Werden die
auch in A implementiert?
>Das heißt, myInterface_I hat rein virtuelle Memberfunktionen?
Ja genau, rein virtuelle Methoden
>Werden die auch in A implementiert?
Nein, in der Templateklasse clasTemp, die auf A vererbet werden soll.
Dazu sei angemerkt, dass Beispiel ist etwas eingedampft.
Letztendlich soll es ein paar Methoden geben, die in A implementiert
werden,
sofern es denn so weitergeht...
Ich fürchte, ich versuche tatsächlich etwas, dass nicht geht.
So wie ich das jetzt sehe kann ein Klassentemplate nur mit dem
spezifizierten Typ umgehen, wird aber nie selbst zu dem Typen.
Bzw. ist sowas denk/machbar:
template <class T>
class A : public T
{
}
obwohl, ich glaub, das machts nicht besser...
Zoukrates schrieb:>class A : public myInterface_I, public clasTemp<myInterface_I>> Dabei habe ich das Problem, dass A abstract bleibt,
Da clasTemp nicht von myInterface erbt, kann es auch dessen virtuelle
Funktionen nicht implementieren.
Schreib hinter die virtuellen Funktionen in clasTemp mal overload
dahinter (das sollte man grundsätzlich tun), dann zeigt dir der Compiler
auch die passenden Fehlermeldungen.
Oliver
Zoukrates schrieb:> obwohl, ich glaub, das machts nicht besser...
Wie bereits in der ersten Antwort geschrieben, geht das und ist die
korrekte Lösung.
Niklas G. schrieb:> Oder lass clasTemp einfach vom Interface> ableiten.