Ver título. Tengo una plantilla. Quiero forzar una instancia particular de una plantilla para crear instancias. ¿Cómo hago esto?¿Cómo fuerzo una instancia particular de una plantilla C++ para crear instancias?
Más específicamente, ¿puede forzar una clase de plantilla abstracta para instanciar?
Podría elaborar porque tengo la misma pregunta. En mi caso, estoy construyendo una biblioteca, algunas de las implementaciones de plantillas son grandes e incluyen muchas cosas, pero solo se generan para un par de tipos. Quiero compilarlos en la biblioteca y exportar todos los métodos, pero no incluir el encabezado con el código en todas partes.
es decir:
template<class T>
OS_EXPORT_DECL class MyTmpl
{
T *item1;
public:
inline T *simpleGetT() { return(item1); } /* small inline code in here */ }
T *doSomeReallyBigMergeStuff(T *b); // note only declaration here
};
// *** implementation source file only seen inside library
template<class T>
MyTmpl<T>::doSomeReallyBigMergeStuff(T *b)
{
... a really big method, but don't want to duplicate it,
so it is a template ...
}
pude de referencia supuesto todos los métodos dentro de la biblioteca que les obligaría a compilar y exportación, pero el deseo no es añadir código de un-necesario para la biblioteca como el argumento formateo de los elementos y el código para llamarlos, etc.
????? específicamente estoy construyendo la biblioteca para varias versiones de MSC y GCC y compiladores de inteligencia.
¿Puede dar un ejemplo? ¿A qué te refieres con "instanciar una clase de plantilla abstracta"? – jalf