Я хочу создать класс Stack
, чтобы пользователь мог выбрать, какой контейнер он хочет использовать для реализации Stack
. Например, List/Vector
.
Частичный код:
stack.h
#ifndef STACK_H_
#define STACK_H_
template <typename T, template<typename T> class ContainerType>
class Stack{
ContainerType<T> container;
public:
Stack() : container(ContainerType<T>()){}
};
#endif /* STACK_H_ */
test.cpp
#include "stack.h"
#include <vector>
int main(){
Stack<int, std::vector<int> > stack;
return 0;
}
Ну, он не компилируется. Я получаю следующие ошибки в строке:
Stack<int, std::vector<int> > stack;
Ошибка:
expected a class template, got `std::vector<int, std::allocator<int> >' test.cpp
invalid type in declaration before ';' token test.cpp
type/value mismatch at argument 2 in template parameter
list for `template<class T, template<class T> class ContainerType>
class Stack' test.cpp