Например, допустим, у нас есть такой класс (разница между этим классом и вашим - в том, что я удалил переменную n
и у меня нет указателя на вектор v
)
template<class T>
class stack
{
vector<T> v;
public:
stack(int,vector<T>*);
~stack();
void push(T);
void pop();
void afis();
};
Если вы пытаетесь без указателя на переменную v, то вы должны использовать список инициализации конструктора, как вам сказала битовая маска.Если вы не напишите список инициализации конструктора, вы получите ошибку компиляции.Это связано с тем, что векторный класс имеет свой собственный конструктор, который должен выполняться перед телом конструктора класса stack
, и единственным местом является список инициализации конструктора.Так что это будет выглядеть так:
template<class T>
stack<T>::stack():v(0)
{
}
, что означает, что вы создали вектор с 0 элементами.
Я думаю, что ваш класс не будет работать так хорошо, если вы попытаетесь использовать его в какой-то другой функциичем главное, но не берите в голову это!