plantillas se expanden en tiempo de compilación, por lo que su problema es realmente lo mismo que la siguiente:
struct A_float { // struct is easier when everything's public
A(float v) : var(v) {} // (use the ctor-initializer please!)
~A() {}
float var;
}; // don't forget the semicolon
struct A_int {
A(int v) : var(v) {}
~A() {}
int var;
};
int main() {
WhatType* object; // What type here?
if (/* something*/)
object = new A_float(0.2f);
else
object = new A_int(3);
}
Con suerte si viste el código anterior, se podría pensar (así como "tal vez debería usar plantillas ")" Voy a necesitar una clase base común para esto, o bien voy a refactor ".
Cuando genera los dos tipos en tiempo de compilación utilizando una plantilla de clase, esta conclusión es la misma.
- Recomendaría la refactorización, buscando una solución como DeadMG's; ¡crear una jerarquía de herencia solo para solucionar un problema de flujo lógico del programa es programar hacia atrás!
+1 para una pregunta claramente pedido con un mínimo, ejemplo completo – Flexo
acuerdo. Probablemente tenga 100000 dudes, pero es bastante claro y está bien hecho. – Puppy