求助,类嵌套,不可以用const修饰
练习模版类时候,发现一个问题,很是疑惑
写了一个嵌套的类,同样是重载操作符,在嵌套的类中使用,若加上const,就会编译错误,不加不错.
错误信息:
passing 'const myvector<10, int>' as 'this' argument of 'Type& myvector<n, Type>::operator[](int) [with int n = 10, Type = int]' discards qualifiers|
||=== 已完成构建: 1 个错误, 0 个警告 ===|
template<int n,class Type=int>
class myvector
{
private:
Type te[n];
public:
myvector()
{
for(int i=0;i<n;i++) te[i]=i+1;
}
Type &operator [](int in)
{
if(in>-1&&in<n)
return te[in];
else
return te[n-1];
}
void show() const//此处可以加上
{
for(int i=0;i<n;i++)
cout<<te[i]<<" ";
return;
}
};
template<class T1,int n>
class mycontainvector
{
private:
myvector<n,T1> v1;
public:
void show() //加上const编译错误
{
for(int i=0;i<n;i++) cout<<v1[i]<<" ";
return;
}
};
Type &operator [](int in)//修改成下面这种因为你下面的类的show如果是const成员函数,那么就不能修改成员函数,也就是说你的成员会转为const。
const Type &operator [](int in)const