Wie spezialisieren Sie nur einige Mitglieder einer Vorlagenklasse?

8

Code:

%Vor%

FEHLER:

%Vor%

Grundsätzlich möchte ich nur eine Funktion spezialisieren und die allgemeine Definition für andere Funktionen verwenden. (Im eigentlichen Code habe ich viele Funktionen, die ich nicht spezialisieren möchte).

Wie geht das? Danke!

    
anon 10.02.2011, 10:01
quelle

3 Antworten

8

Ziehen Sie in Erwägung, allgemeine Teile in eine Basisklasse zu verschieben:

%Vor%

Sie können f1 sogar in der abgeleiteten Klasse überschreiben. Wenn Sie etwas ausgefalleneres tun möchten (einschließlich des Aufrufs von f2 von f1 code in der Basisklasse), sehen Sie sich das CRTP .

    
Alexandre C. 10.02.2011, 10:06
quelle
8

Würde das helfen:

%Vor%     
Tomek 10.02.2011 20:07
quelle
2

Wenn wir Spezialisierungen für eine Template-Klasse deklarieren, müssen wir auch alle seine Member definieren, auch diejenigen, die exakt der generischen Template-Klasse entsprechen, da es keine Vererbung von Mitgliedern der generischen Vorlage gibt Spezialisierung. Also, in Ihrer Spezialisierung müssen Sie auch void f1(); implementieren.

    
Mahesh 10.02.2011 10:04
quelle