Estoy tratando de crear una clase de administrador de configuración, que pueda almacenar objetos arbitrarios por std :: string.¿Alguna manera de tener una función de plantilla en una clase base abstracta?
Mi idea de partida de mi interfaz (clase base abstracta) era esto (por supuesto, esto es terriblemente incompleta)
class ConfigurationManager
{
public:
static boost::shared_ptr<ConfigurationManager> create();
template<typename T>
virtual T getOption(const std::string& name) = 0;
};
Pero entonces mi compilador señaló que quieras que no puede ser virtual (y luego me di cuenta de que yo no puede haber exportado plantillas de todos modos).
Internamente voy a utilizar boost :: any's (casi un tiempo de ejecución anulado vacío *), pero no quiero exponer boost :: any en mi interfaz.
¿Cuál sería la mejor manera de hacerlo?
¿Para qué, exactamente? –
@Oli Para simular la interfaz sintácticamente imposible que publiqué en mi pregunta. – Lalaland
Entonces, ¿desea hacer plantillas de función polimórficas, aunque no sean realmente posibles? –