-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 =':必须返回一个值'C++中的错误C4716
再次阅读错误信息,然后检查你的'operator ='函数。它会返回任何东西吗?我的意思是,实际上使用'return'语句? –
“Vector :: operator =必须返回一个值”,你不明白哪一部分? –