c++ - teclado - mecanografia online gratis ejercicios de texto
Cómo tipear una clase de plantilla? (2)
En C ++ 03 puedes heredar de una clase (pública o privada) para hacerlo.
template <typename T>
class MyVector : public std::vector<T, MyCustomAllocator<T> > {};
Necesita hacer un poco más de trabajo (Específicamente, copiar constructores, operadores de asignación) pero es bastante factible.
Esta pregunta ya tiene una respuesta aquí:
- Plantilla C ++ typedef 1 respuesta
¿Cómo debo typedef
una template class
? Algo como:
typedef std::vector myVector; // <--- compiler error
Sé de 2 maneras:
(1) #define myVector std::vector // not so good
(2) template<typename T>
struct myVector { typedef std::vector<T> type; }; // verbose
¿Tenemos algo mejor en C ++ 0x?
Sí. Se llama una " plantilla de alias " y es una nueva característica en C ++ 11.
template<typename T>
using MyVector = std::vector<T, MyCustomAllocator<T>>;
El uso sería exactamente como esperabas:
MyVector<int> x; // same as: std::vector<int, MyCustomAllocator<int>>
GCC lo ha soportado desde 4.7 y Clang lo tiene desde 3.0.