tengo esta plantilla de clase:plantillas variadic y nueva
template<class... T>
class Test {
std::vector<TestCase*> test_cases;
public:
Test() {
// Here, for each T an instance should be added to test_cases.
test_cases.push_back((new T)...);
}
};
Esto funciona bien para un parámetro de plantilla, pero para múltiples argumentos me sale este error:
error: too many arguments to function call, expected 1, have 2
¿Cómo puedo utilizar las plantillas variadic con new
de esta manera? ¿Cual es la sintaxis correcta?
EDIT: Creo que mi pregunta no era del todo clara. Lo que yo quiero es éste:
Test<TestCase1, TestCase2, TestCase3>;
// The constructor will then be:
test_cases.push_back(new TestCase1);
test_cases.push_back(new TestCase2);
test_cases.push_back(new TestCase3);
Mi compilador es 163.7.1 sonido metálico con esta bandera: -std=c++0x
.
'std :: vector test_cases;' parece extraño porque T es más de un tipo allí. –
Flexo
@awoodland tienes razón. Gracias por descubrir esto De hecho, cada 'T' es una subclase de' TestCase' (por eso uso punteros). Voy a cambiar esto. –
Puede probar 'test_cases.push_back (new T()) ...;'. –