私はテンプレートを使用し、サイズを持つ単純な配列クラスを持っています。私はそれが満員のときはいつでもサイズを変更したいが、私のプログラムはクラッシュする。 コードは次のようである:。C++配列サイズ変更のクラッシュ
template<class T>
class Buffer:public File_ptr
{
unsigned int siz;
T *data;
public:
///konstruktor(size,filename,openmode)
Buffer(unsigned int s=50,const char* n, const char* m):File_ptr(n,m),siz(s)
{
data= new T[siz];
for(unsigned int i=0; i<siz; ++i)
{
data[i]=0;
};
};
///destruktor
~Buffer()
{
delete[] data;
}
///operator[]
T& operator[](unsigned int i)
{
if(i>siz)
{
unsigned int newsize=siz*2;
T* tmp=new T[newsize];
for(unsigned int j = 0; j < siz; j++)
{
tmp[j] = data[j];
}
siz=newsize;
delete[] data;
data=tmp;
delete[] tmp;
};
return data[i];
}
};
エラーがオペレータ[](少なくとも私は思う)に付属しています。 メインプログラムは、このようなものです:
int main()
{
Buffer<int> k(20,"k.txt","w");
Buffer<char*> s(20,"s.txt","w");
k.printfile("HEY");
s.printfile(5);
for(unsigned int i=0;i<23;i++){
s[i]="Hey";
cout << s[i] << endl;
}
return 0;
}
すべてのヘルプは素晴らしいことです! :) ありがとう!
ありがとうございました!出来た! :)) –