-6
<code>
#ifndef VECTOR_H
#define VECTOR_H
template <class T>
class Vector
{
public:
Vector();
~Vector();
void add(T element);
int size() const;
T get(int i) const;
void set(int i, T element);
bool contains(T element);
Vector<T>& operator=(const Vector<T> &rhs);
private:
int numElements;
int capacity;
T *elements;
void expand();
};
template <class T>
Vector<T>::Vector()
{
numElements = 0;
capacity = 10;
elements = new T[capacity];
}
template <class T>
Vector<T>::~Vector()
{
delete[] elements;
}
template <class T>
void Vector<T>::add(T element)
{
if (numElements >= capacity)
{
expand();
}
elements[numElements] = element;
numElements++;
}
template <class T>
int Vector<T>::size() const
{
return numElements;
}
template <class T>
T Vector<T>::get(int i) const
{
return elements[i];
}
template <class T>
void Vector<T>::set(int i, T element)
{
elements[i] = element;
}
template <class T>
void Vector<T>::expand()
{
T *tempElements = new T[capacity * 2];
for (int i = 0; i < capacity; i++)
{
tempElements[i] = elements[i];
}
delete[] elements;
elements = tempElements;
capacity *= 2;
}
template <class T>
bool Vector<T>::contains(T element)
{
for (int i = 0; i < numElements; i++)
{
if (elements[i] == element)
{
return true;
}
}
return false;
}
template <class T>
Vector<T>& Vector<T>::operator=(const Vector<T> &rhs)
{
delete[] elements;
numElements = rhs.size();
capacity = numElements * 2;
elements = new T[capacity];
for(int i = 0; i < numElements; i++)
elements[i] = rhs.get(i);
}
#endif
</code>
私はC++にはかなり新しく、データ構造と抽象化に関する課題があります。私はいくつかのCPPとヘッダーファイルを持っていますが、これ以外は正常に動作します。私がコンパイルすると、 "重大度コード説明プロジェクトファイルの行の抑制状態 エラーC4716 'と表示されます。Vector :: operator =':値を返す必要があります。エラーC4716 in C++
エラーメッセージをもう一度読み、 'operator ='関数を確認してください。それは何かを返しますか?つまり、実際には 'return'ステートメントを使用しますか? –
「Vector :: operator = valueを返さなければならない」のどの部分を理解できませんでしたか? –