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

How to assign value to an array of objects from main function

本文关键字:对象 数组 赋值 函数      更新时间:2023-10-16
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 循环内的主要函数下,我想使用 V[i] 而不是 V.at(i) 。

那么我应该在类 Vector 中进行哪些更改。有人帮忙。

我尝试使用构造函数调用,运算符重载等,但每次都失败了语法错误。

我不是一个在OOP设计方面很有经验的人。所以我期待帮助。

重载operator[]函数,如下所示:

int& operator[] (int idx) {
    return v[idx];
}

此外,您应该提供函数的const版本,当Vector符合 const 标准时可以使用该版本。

const int& operator[] (int idx) const {
    return v[idx];
}

要与类一起使用的每个运算符都需要重载。

有关详细信息,您可以查看此问题。

当然,除非这是家庭作业,否则唯一理智的事情就是使用std::vector

您需要重载 [] 运算符。

int &operator[](int i)
      {
          if( i >= sz )
          {
              cout << "Index out of bounds" <<endl; 
              // return first element.
              return v[0];
          }
          return v[i];
      }