me gustaría construir algo como esto:"plantillas" un espacio de nombres
File 1:
template<typename Vector>
namespace myNamespace {
class myClass1{ myClass1(Vector v) {...} }
}
File 2:
template<typename Vector>
namespace myNamespace {
class myClass2{ myClass2(Vector v) {...} }
}
Por supuesto esto no es posible porque no se puede espacios de nombres de plantilla. En su lugar, podría usar una estructura en lugar de un espacio de nombres, pero luego no puedo extender las funciones del espacio de nombres sobre varios archivos.
¿Hay alguna solución para tal problema?
PD: Sé que podría diseñar las clases, pero luego tendría que especificar qué tipo de vector quiero usar en cualquier momento que cree una nueva clase.
Acerca de su PS: ¿Cómo cree que tener un espacio de nombres con plantillas eliminaría la necesidad de especificar el tipo de vector al crear instancias de clases? Todavía necesitarías al menos algo así como (de ficción) 'using namespace myNamespace; ' –
stakx
Estoy con stakx en esto. ¿Y qué es eso 'int' en tu código? – sbi
Sí, pero luego podría hacer algo como esto: int function1() { usando el espacio de nombres myNamespace; myClass1 c1 = myClass1 (5); myClass2 c2 = myClass2 (2); } int function2() { usando el espacio de nombres myNamespace ; myClass1 c1 = myClass1 ('a'); myClass2 c2 = myClass2 ('b'); } Lo siento, ese int es incorrecto, lo eliminaré. ¿Cómo pego el código aquí correctamente? –
Manuel