class Vector{
public :
int *v;
Vector(int sz){
v = new int[sz];
}
int & at(int idx){
return v[i];
}
};
int main(){
Vector V(5);
for(int i=0;i<5;++i){
V.at(i) = i+1;
}
return 0;
}
在for循环中的main函数下的上面的程序中,我想使用V [i]而不是V.at(i)。
那么我应该在类Vector.Someone帮助中做出什么改变。
我尝试使用构造函数调用,运算符重载等,但每次出现语法错误都失败了。
我不是OOP设计方面经验丰富的人。 所以我期待帮助。
答案 0 :(得分:4)
重载operator[]
函数,如下所示:
int& operator[] (int idx) {
return v[idx];
}
此外,您应提供函数的const
版本,可在Vector
符合const时使用。
const int& operator[] (int idx) const {
return v[idx];
}
答案 1 :(得分:0)
你需要重载[]运算符。
int &operator[](int i)
{
if( i >= sz )
{
cout << "Index out of bounds" <<endl;
// return first element.
return v[0];
}
return v[i];
}
答案 2 :(得分:0)