我正在用c ++实现我自己的向量。
这是我的Vector类:
template <class T>
class Vector
{
private :
T *ptr;
unsigned int numEle;
public :
T operator[] (unsigned int index)
{
if (index >= numEle)
return ptr[0];
else if (index < 0)
return ptr[0];
else
return ptr[index];
}
};
我想要做的是重载=
运算符,这样当我写
Vector v;
v[2]=2;
它将值2赋给第二个索引.... 请帮助.. !!
答案 0 :(得分:6)
应该是
T& operator [] (unsigned int index)
适用于您的情况。另外,我建议您编写运算符的const
版本。
const T& operator [] (unsigned int index) const
答案 1 :(得分:1)
Make 1方法返回对给定索引的引用;另一个const方法返回给定索引的const引用 - 后者用于读取类型const Vector&
的元素。
T& operator[] (unsigned int index) // make it return a reference.
{
if (index >= numEle)
return ptr[0];
return ptr[index];
};
const T& operator[] (unsigned int index) const // make it return a const reference
{
if (index >= numEle)
return ptr[0];
return ptr[index];
};
请注意,unsigned int
不能< 0
,因此第二个if
无用。
operator=
用于撰写vector = anotherVector
;这里不需要它。
但是,如果您的T
是一个类,则可能需要operator=
。