我制作了自己的矢量模板operator[]
的一部分:
template <class T>
T& vector<T>::operator[](unsigned int index)
{
return m_Data[index];
}
我在类复制构造函数
中使用此代码Track::Track(const Track& src)
{
for(unsigned int i = 0; i < src.sorted.size(); i++)
AddCar(src.sorted[i]->rz, src.sorted[i]->owners.back()->name, src.sorted[i]->owners.back()->surname);
}
我收到错误'no match for operator[] (operands types are const vector<Track*> and unsigned int)'
我尝试使用operator[]
关键字
const
const T& operator[](unsigned int);
但这给了我一个不同的错误:const T& operator[](unsigned int); cannot be overloaded
这可能是什么原因?
答案 0 :(得分:7)
您必须像const
那样实施operator[]
版本:
template <class T>
const T& vector<T>::operator[](unsigned int index) const
{
return m_Data[index];
}
答案 1 :(得分:5)
原因正是您所说的:没有const
超载,因此您无法将[]
应用于const
向量。
你没有说你尝试了什么或错误是什么,但这应该有效:
T const & operator[](unsigned int index) const {return m_Data[index];}
T & operator[](unsigned int index) {return m_Data[index];}