getempletiseerd argument in virtuele member-functie

Status
Niet open voor verdere reacties.

drunkyjunky

Nieuwe gebruiker
Lid geworden
8 sep 2008
Berichten
2
Hey,

Ik heb volgend probleem :

Ik heb een klasse die pure virtuele methode heeft (of die puur virtueel is of gewoon virtueel maakt hier eigenlijk niet uit, denk ik). Deze methode zou ik graag een getempletiseerd argument laten aannemen. Maar wanneer ik compile, krijg ik de fout-melding dat getempletiseerde member-functies niet virtueel mogen zijn...

Maar eigenlijk slaat de template-specificatie niet op de member-functie zelf, maar op een argument voor deze functie. Weet iemand hoe ik dit kan oplossen?

Hier is een vereenvoudigd code-voorbeeld :

Code:
template < typename T >
class TC{};

class Base
{
    public :
        template < typename T > virtual void func( TC< T >) = 0;
};

Ik heb ook al volgende andere notaties geprobeerd, maar die geven telkens een syntax-fout terug :

Code:
virtual template < typename T > void func( TC< T >) = 0;

en

Code:
virtual void func( template < typename T > TC < T >) = 0;

(u ziet, deze laatste poging is een wanhoopsdaad waarvan ik het falen al op voorhand wist...)

Iemand die me kan helpen?

mvg,
Tony.
 
Ah, ok. Onmogelijk dus.

Misschien iemand die hier ook de reden voor weet?

Bij templates wordt enkel code door de compiler gegenereerd die ook echt opgeroepen wordt, maar als je gebruik wilt maken van het hele virtuele member-functie - gebeuren, moet deze toch opgeroepen worden.... Indien die functie van de base-class niet gebruikt wordt, maar rechtstreeks een afgeleide klasse aangesproken wordt, maakt het ook niet uit dat de base-class member-functie niet door de compiler gegenereerd wordt.

Ik zal dus zowiezo gewoon mijn design moeten herzien, maar toch wil ik graag weten waarom een getempletiseerde member-functie niet virtueel kan zijn. Op het eerste zicht zie ik hier geen problemen mee en lijkt het voor mij gewoon een kunstmatige beperking...

mvg,
Tony
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan