c++ - template - Inicialización de miembro estático en una plantilla de clase
template en c++ pdf (2)
Esto funcionará
template <typename T>
struct S
{
static double something_relevant;
};
template<typename T>
double S<T>::something_relevant=1.5;
Me gustaría hacer esto:
template <typename T>
struct S
{
...
static double something_relevant = 1.5;
};
pero no puedo porque something_relevant
relevante no es de tipo integral. No depende de T
, pero el código existente depende de que sea un miembro estático de S
Como S es la plantilla, no puedo poner la definición dentro de un archivo compilado. ¿Cómo resuelvo este problema?
Simplemente defínalo en el encabezado:
template <typename T>
struct S
{
static double something_relevant;
};
template <typename T>
double S<T>::something_relevant = 1.5;
Como es parte de una plantilla, como con todas las plantillas, el compilador se asegurará de que solo se haya definido una vez.