自制矢量模板运算符[]错误
selfmade vector template operator[] error
我制作了自己的矢量模板,operator[]
其中的一部分:
template <class T>
T& vector<T>::operator[](unsigned int index)
{
return m_Data[index];
}
我在class复制构造函数
中使用这段代码
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)'
我试图用 const
关键字重载 operator[]
:
const T& operator[](unsigned int);
但这给了我一个不同的错误:const T& operator[](unsigned int); cannot be overloaded
这可能是什么原因?
您必须像这样实现 operator[]
的 const
版本:
template <class T>
const T& vector<T>::operator[](unsigned int index) const
{
return m_Data[index];
}
原因正是你所说的:没有 const
重载,所以你不能将 []
应用于 const
向量。
你没有说你尝试了什么或错误是什么,但这应该有效:
T const & operator[](unsigned int index) const {return m_Data[index];}
T & operator[](unsigned int index) {return m_Data[index];}
我制作了自己的矢量模板,operator[]
其中的一部分:
template <class T>
T& vector<T>::operator[](unsigned int index)
{
return m_Data[index];
}
我在class复制构造函数
中使用这段代码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)'
我试图用 const
关键字重载 operator[]
:
const T& operator[](unsigned int);
但这给了我一个不同的错误:const T& operator[](unsigned int); cannot be overloaded
这可能是什么原因?
您必须像这样实现 operator[]
的 const
版本:
template <class T>
const T& vector<T>::operator[](unsigned int index) const
{
return m_Data[index];
}
原因正是你所说的:没有 const
重载,所以你不能将 []
应用于 const
向量。
你没有说你尝试了什么或错误是什么,但这应该有效:
T const & operator[](unsigned int index) const {return m_Data[index];}
T & operator[](unsigned int index) {return m_Data[index];}