簡體   English   中英

如何重載下標運算符 [] 以引用 2d STL 數組?

[英]How to overload subscript operator [] to reference 2d STL array?

我正在嘗試為我的班級創建一個重載運算符,我的班級包含一個二維數組容器。 我想按如下方式使用運算符:fooClass a; a[i][j] = 4; 我不想像 a[i, j], a(i, j) 那樣使用它或調用函數來輸入或輸出元素。 有可能嗎?

鏈接調用不起作用,因為第一個返回指向數組的指針,第二個應該返回數組中的一個元素,即浮點數。

我的課看起來像這樣:

class foo
{
    public:
    foo();
    ~foo();

    foo& operator=(const foo&rhs);
    foo& operator=(const foo&&rhs);
    foo& operator=(std::initializer_list<std::initializer_list<float>> il); 
    friend std::ostream& operator<<( std::ostream& os, const foo&rhs);
    std::array<float, 3>& operator[](const int & rhs); <<<<HERE<<<< What should it return?

    private:
    std::array<std::array<float, 3>, 3> matrix;
};


int main()
{
    foo a;
    a = {{1,2,3},{4,5,6},{7,8,9}};
    a[1][2] = 13;
    cout << a[1][2] << endl;


    return(0);
}

我的問題是,如何做到這一點,以及應該使用什么函數..... operator[](const int & rhs); 返回?

僅供參考,我沒有直接使用數組容器,因為我正在實現其他功能,我也在做矩陣列專業。

這不行嗎?

  std::array<float, 3>& operator[](const int & rhs) {
    return matrix[rhs];
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM