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.
Das, was du vermutlich vor hast, nennt sich https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern Aber ob das dein ursprüngliches Problem löst, keine Ahnung. Oliver
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.