Je cherche un meilleur moyen pour ça. J'ai un morceau de code qui doit gérer plusieurs objets différents qui contiennent des types différents. La structure que je ressemble à ceci:Spécialisation de template partiel sur une classe
class Base
{
// some generic methods
}
template <typename T> class TypedBase : public Base
{
// common code with template specialization
private:
std::map<int,T> mapContainingSomeDataOfTypeT;
}
template <> class TypedBase<std::string> : public Base
{
// common code with template specialization
public:
void set(std::string); // functions not needed for other types
std::string get();
private:
std::map<int,std::string> mapContainingSomeDataOfTypeT;
// some data not needed for other types
}
Maintenant, je dois ajouter des fonctionnalités supplémentaires qui ne vaut que pour l'une des classes dérivées. Plus précisément, la dérivation std :: string, mais le type n'a pas vraiment d'importance. La classe est assez grande pour que je préfère ne pas copier le tout simplement pour en spécialiser une petite partie. Je dois ajouter quelques fonctions (et accesseur et modificateur) et modifier le corps de plusieurs autres fonctions. Y a-t-il une meilleure façon d'accomplir cela?
Oui ... mais j'ai également besoin d'ajouter des méthodes supplémentaires à la classe. –