Реализация специального массива с помощью конструктора.
#include<iostream>
using namespace std;
int length(const int *s){
int L;
for(L=0; s[L] != '\0'; L++){};
return L;
}
void scopy(int destination[], const int source[], int dstart=0)
{
int i;
for(i=0; source[i] != '\0'; i++)
destination[dstart+i]=source[i];
destination[dstart+i]=source[i]; // copy the '\0' itself
}
class eArray
{
int *ptr;
void * operator new(unsigned int sz);
public:
eArray()
{
ptr=NULL;
}
int size()const {cout<<"Hi";return length(ptr);}
int& operator[](int i) const {return ptr[i];}
eArray(const eArray &rhs)
{
ptr = new int[length(rhs.ptr)+1];
scopy(ptr,rhs.ptr);
}
eArray& operator=(const int* rhs)
{
delete [] ptr;
ptr = new int[length(rhs)+1];
scopy(ptr,rhs);
return *this;
}
eArray& operator=(const eArray &rhs)
{
delete [] ptr;
ptr = new int[length(rhs.ptr)+1];
scopy(ptr,rhs.ptr);
return *this;
}
void push_back(int v)
{
cout<<"Hi2";
int *a=new int[length(ptr)+2];
scopy(a,ptr);
a[length(ptr)]=v;
a[length(ptr)+1]='\0';
delete[] ptr;
ptr=new int[length(a)+1];
scopy(ptr,a);
}
};
Ошибка при выполнении при вводе. Я думаю, что это неправильно в функции length (). Пожалуйста, помогите. Когда я даю число в качестве ввода (скажем, 2), он печатает Hi2 в функции push_back и завершается.