Q是如何对这种算子= 它将起作用:
int t = v [3]; //她的价值回归
v [3] = 8; //她需要通过引用返回(指向V [3] add')
将V是Vector类(在我的情况下是模板类)
template <class T>
T& Vector<T>::operator[](const int Index) const
{
if(Index > -1 && Index < this->Size)
{
return &this->Array[Index];
}
else
{
cerr <<"VECTOR_INVALID_INDEX"<<endl;
return NULL;
}
};
答案 0 :(得分:0)
此示例中有几个错误。 this
已经是一个指针。做&this
几乎肯定不是你想要做的。您遇到的另一个问题是您正在返回对T
的引用,但this
在此上下文中是const。 this->Array[Index]
是const T
,无法绑定到T&
。添加一个const并返回const T&
。第三,this->Size
没有调用方法Size,你忘了括号。第四个问题是对NULL的引用绑定。你将不得不决定另一种方法。指示无法完成操作的常用方法是抛出异常。 std::vector::at从标题stdexcept中抛出std::out_of_range。
template <class T>
const T& Vector<T>::operator[](const int Index) const
//^^^ add const here
{
if (Index > -1 && Index < this->Size())
// Add parentheses ^^
{
return this->Array[Index];
// ^ No need for &
}
else
{
throw std::out_of_range("VECTOR_INVALID_INDEX");
}
};
您可能还想添加非const版本,因为示例v[3] = 8;
会失败。使用相同的主体定义此方法:
T& Vector<T>::operator[](const int Index);