Estoy haciendo algo que probablemente sea una tontería, pero estaría bien si funcionara.¿Compartir miembros estáticos entre instancias de plantilla? (imposible?)
Estoy intentando especializar tipos de una manera que necesito mi propia estructura de búsqueda que es esencialmente global (pero idealmente encapsulada como una variable de clase), pero quiero que los objetos sean de tipo seguro, por lo que están parametrizados.
En consecuencia, tengo, esencialmente
template<class T, int N>
class SpecialArray
{
//...
private:
static map<string, internal_t> lookupTable
}
y por cualquier motivo, no pensé que hasta el momento en que fui a inicializar LookupTable que cuando digo
template <class T, int N>
SpecialArray<T,N>::lookupTable;
existen va a haber muchos lookupTable
s corriendo alrededor de las distintas instancias de SpecialArray
.
Sospecho que puede ser solo un sueño y que la respuesta correcta es simplemente convertirlo en un objeto singleton global por separado, pero ¿hay alguna forma de que solo haya un lookupTable
para todos los SpecialArray
s?
Al igual que, en el C++ en mi mente (que no es real C++), esto sería algo como
template <class T, int N>
SpecialArray<*,*>::lookupTable;
... pero lamentablemente GCC no se compila el C++ en mi mente
¿Hay alguna forma real de obtener lo que quiero (en algún lugar de C++ 0x-land o algo así)? Es probable que encuentre este problema también con algunos métodos estáticos que manipulan esta tabla de búsqueda (que no hace un seguimiento de los tipos o Ns).
... disculpa si eso no tenía ningún sentido.
Gracias de antemano por cualquier ayuda o simpatía que pueda brindar.
¿Cuál es 'internal_t'? –
pregunta relacionada: [¿Miembro de plantilla estática de C++, una instancia para cada tipo de plantilla?] (Http://stackoverflow.com/questions/2220975/c-staticover-template-member-one-instance-for-each-template-type) –