配列クラス用の関数を含むテンプレートクラスを作成しようとしています。 int型、float型、double型で動作するようですが、文字列では機能しません。私は含まれており、名前空間stdを使用しています。配列のサイズを変更するためのテンプレート
文字列を使用しない限り、すべてがコンパイルされ、うまく動作します。この場合、サイズ変更機能でエラーが発生します。 (すべてがコンパイルされ、エラーはここでしか存在しないため)私は、次の関連するコードを持っている、ヘッダファイル内
:
template<typename T>
void Array<T>::resize(int newSize)
{
T* newArray = new T[newSize];
if (newSize >= mSize)
{
for (int i = 0; i < newSize; ++i)
newArray[i] = mData[i];
}
else
for (int i = 0; i < mSize; ++i)
newArray[i] = mData[i];
delete[] mData;
mData = new T[newSize];
mSize = newSize;
for (int i = 0; i < newSize; ++i)
mData[i] = newArray[i];
delete[] newArray;
newArray = 0;
}
は、事前にありがとうございます。新しいサイズが古いサイズよりも大きい場合、あなたは古い配列からnewSize
読み取り値まで0から繰り返すこと
T* newArray = new T[newSize];
if (newSize >= mSize)
{
for (int i = 0; i < newSize; ++i)
newArray[i] = mData[i];
}
は予告:
エラーは何ですか? – yizzlez
あなたのコードは本当に冗長で、リファクタリングが必要です。 – Charles
私は初心者であり、私が現在知っているツールを学ぼうとしています。私は練習でより良く、より効率的になることを知っています。 – David