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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.