Я создал шаблон для моего класса, чтобы эмулировать основные функции стека, и я получаю сообщение об ошибке, и я не знаю, как его исправить.C++ stack template
Мой код:
#using <mscorlib.dll>
using namespace System;
using namespace System::IO;
#include <iostream>
#include <vector>
using namespace std;
template<class T>
class stack
{
vector<T> *v;
int n;
public:
stack(int,vector<T>*);
~stack();
void push(T);
void pop();
void afis();
};
template<class T>
stack<T>::stack(int x, vector<T> *y)
{
x = n;
y = v;
}
template<class T>
stack<T>::~stack()
{
}
template<class T>
void stack<T>::push(T item)
{
v->push_back(item);
}
template<class T>
void stack<T>::pop()
{
v->pop_back();
}
template<class T>
void stack<T>::afis()
{
typedef vector<T>::iterator it;
for(it i = v->begin(); i != v->end(); ++i)
cout << *i << " ";
}
int main()
{
int n, nr;
cin >> n;
vector<int> v;
for(int i = 0; i < n; i++)
{
cin >> nr;
v.push_back(nr);
}
stack<int> st(n, &v);
st.pop();
st.afis();
}
И ошибка во время выполнения, и он говорит, что доступ к памяти, что он не должен. Также мне интересно, могу ли я объявить свой стек через указатель что-то вроде стека * st = new stack (n, & v). Это возможно?
Это не стандарт C++. Это CLI/C++, который является языком Microsoft, специально разработанным для CLR. – Nawaz
@ Наваз игнорирует первую строку. он не имеет ничего общего с кодом – Dementor
Ваш конструктор кажется обратным ... Должно быть 'v = y' и' n = x', а не так, как написано ... – spatz