Я создаю стандартную c коробку с шаблоном. В основном что-то вроде очереди или связанного списка. Я продолжаю получать SIGSEGV по некоторым причинам, и я не могу понять это. Я беру целое число или строку от пользователя в main, а затем конструктор выделяет память для существующего ящика generi c, а затем использует функцию inert_First (есть намного больше функций, таких как insert_Mid, insert_last, delete_Mid et c) и мне все время говорят, что у меня неправильная память, но я не знаю где?
это класс
template<class T>
class g_Box
{
int first,mid,last;
int no_Of_Ele;
int capacity;
T *ele;
public:
g_Box();
g_Box(int);
void insert_First(T);
};
это конструктор
template<class T>
g_Box<T>::g_Box(){
first=-1, last=-1, mid=-1;
no_Of_Ele=0;
capacity=10;
T *ele = new T[capacity];
}
template<class T>
g_Box<T>::g_Box(int a){
first=-1, last=-1, mid=-1;
no_Of_Ele=0;
capacity=a;
T *ele = new T[capacity];
}
Это insert_First
template<class T>
void g_Box<T>::insert_First(T a){
if(isFull()){
cout<<"The box is full";
}
else if(isEmpty()){
first=0; last=0; mid=(first+last)/2;
ele[0]=a;
no_Of_Ele++;
}
else{
T *ele2 = new T[capacity];
//T ele2[capacity];
for(int i=0; i<no_Of_Ele; i++){
ele2[i]=ele[i];
}
for(int i=0; i<no_Of_Ele; i++){
ele[i+1]=ele2[i];
}
ele[first]=a;
last++;
mid=(first+last)/2;
no_Of_Ele++;
delete[] ele2;
}
}
и это главный
int main()
{
g_Box<int> g;
int data;
cin>>data
g.insert_First(data);
}