resueltos - ¿Cómo reenviar declarar una clase de plantilla C++?
programacion orientada a objetos c++ ejemplos (2)
Dada una clase de plantilla como la siguiente:
template<typename Type, typename IDType=typename Type::IDType>
class Mappings
{
public:
...
Type valueFor(const IDType& id) { // return value }
...
};
¿Cómo puede alguien reenviar declarar esta clase en un archivo de cabecera?
Así es como lo harías:
template<typename Type, typename IDType=typename Type::IDType>
class Mappings;
template<typename Type, typename IDType>
class Mappings
{
public:
...
Type valueFor(const IDType& id) { // return value }
...
};
Tenga en cuenta que el valor predeterminado está en la declaración directa y no en la definición real.
Puede declarar argumentos predeterminados para una plantilla solo para la primera declaración de la plantilla. Si desea permitir a los usuarios reenviar declarar una plantilla de clase, debe proporcionar un encabezado de reenvío. Si desea reenviar declarar la plantilla de clase de otra persona utilizando los valores predeterminados, ¡no tiene suerte!