クラス テンプレートを作成しましたが、演算子は 2 つの型が同じ場合にのみ機能します。ヘッダファイルやcppファイルで型を定義する方法がわかりません。これは私のコードです:
ヘッダファイル:
ArrayList& operator=(ArrayList const&);
cpp ファイル:
template <class T>
ArrayList<T>& ArrayList<T>::operator=(ArrayList<T> const& other) {
if (this != &other) {
delete [] Array;
Array = new T [other.lenght];
lenght = other.lenght;
std::copy(other.Array, other.Array+lenght, Array);
}
return *this;
}
a と b を int として定義すると、a=b が機能します。しかし、a を char として定義すると、a=b は機能しません。これを解決するには?
編集::
Barry が言ったように、構文を変更する必要があります。そして、.cpp ファイルの最後にあるインスタンス化を変更する必要があります (別の .h ファイルと .cpp ファイルを使用しています)。しかし問題はこの部分から
if (this != &other) {
delete [] Array;
Array = new T [other.lenght];
lenght = other.lenght;
std::copy(other.Array, other.Array+lenght, Array);
}
しかし、どこに問題があるのか わかりません。上記にコメントすると、すべてうまくいきますが...
これらのエラーが発生しました:
エラー C2440: '!=': 'const ArrayList *' から 'ArrayList *const' に変換できません
エラー C2248: 'ArrayList::length': クラス 'ArrayList' で宣言されたプライベート メンバーにアクセスできません (3 回)