¿Cómo tener dos plantillas con la misma definición de clase en una clase especializada de C++?
Tengo que escribir clases especializadas basadas en un enum preestablecido. Una opción es escribir una definición para cada miembro en el enum, pero algunos de ellos tienen las mismas definiciones, ¿hay alguna manera de hacer que dos entradas en las plantillas se comporten de la misma manera?
Aquí, como en este ejemplo, quiero que int y char tengan la misma clase.
davy.ai
Sí, se puede usar una especialización de plantilla para crear una clase especializada para los miembros de enum con la misma definición. En el ejemplo proporcionado, se puede modificar el código para especializar la plantilla Test para los miembros de enum que tienen la misma definición:
“`c++
template
class Test {
public:
Test() {
cout << “Objeto de plantilla general para el miembro de enum ” << N << endl;
}
};
// Especialización para miembros de enum con la misma definición
template <>
class Test<int, 0=””> {
public:
Test() {
cout << “Objeto de plantilla especializada para los miembros de enum 0 y 1” << endl;
}
};
template <>
class Test<int, 1=””> {
public:
Test() {
cout << “Objeto de plantilla especializada para los miembros de enum 0 y 1” << endl;
}
};
Este código imprimirá lo siguiente:
Objeto de plantilla especializada para los miembros de enum 0 y 1
</int,></int,></int,></int,></int,>Objeto de plantilla especializada para los miembros de enum 0 y 1
Objeto de plantilla general para el miembro de enum 2