Ich habe eine Basisklasse mit einer Funktionsvorlage.
Ich leite von der Basisklasse ab und versuche, eine Spezialisierung für die Funktionsvorlage in der abgeleiteten Klasse zu haben
Ich habe so etwas gemacht.
%Vor%und in .cpp-Datei Ich habe eine Implementierung für die Template-Spezialisierung bereitgestellt.
Dies funktioniert gut mit MSVC 8.0 und g ++ - 4.4.2 beschwert sich über Mangel an Function Deklaration Spaß in abgeleiteten Klasse.
Ich weiß nicht, welcher Compiler sich korrekt verhält. Jede Hilfe in diesem wird sehr geschätzt.
Vielen Dank im Voraus, Surya
Sie müssen die Funktion in Derived deklarieren, um sie überladen zu können:
%Vor%Beachten Sie, dass Sie die Spezialisierung möglicherweise inline einfügen oder in eine Implementierungsdatei verschieben müssen. In diesem Fall müssen Sie die Spezialisierung in der Headerdatei folgendermaßen prototypieren:
%Vor%andernfalls verwendet der Compiler die verallgemeinerte Version von 'fun', um Code zu generieren, wenn er aufgerufen wird, anstatt mit der Spezialisierung zu verknüpfen.
Warum können Sie nicht
? %Vor% g++
's Fehlermeldung sieht für mich richtig aus. fun
wird in Base
und nicht in Derived
deklariert.
Eine alternative Option wäre auch eine einfache Nicht-Template-Funktion in Derived ...
%Vor%
Tags und Links c++ inheritance templates