如何从main函数为对象数组赋值

时间:2015-01-30 13:50:09

标签: c++

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设计方面经验丰富的人。 所以我期待帮助。

3 个答案:

答案 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)

您希望与班级一起使用的每个操作员都需要重载。

您可以查看this question了解详情。

当然,除非这是家庭作业,否则唯一能做的就是使用std::vector