class A : public myInterface_I, public clasTemp<myInterface_I> => A remains abstract

Gast #5341591
Lesenswert?

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?
#5341645
Lesenswert?

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?
Gast #5341658
Lesenswert?

>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...
Gast #5341685
Lesenswert?

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...
#5341692
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren