簡體   English   中英

覆蓋數組索引運算符

[英]override array index operator

我想在類中重寫數組索引運算符。 這是我想做的,但沒有成功。

class Complex{              
    Complex const& operator[](unsigned int) const; // Read-only access
    Complex& operator[](unsigned int);             // Read/Write access:
};

const Complex& Complex::operator [](unsigned int unsignedInt) const {
    const Complex* temp = this+i;
    return *temp;
}
Complex& Complex::operator [](unsigned int unsignedInt) {
    Complex* temp = this+i;
    return *temp;
}

編輯:我想做類似的事情:

Complex **c = new Complex[5];    //Create 2D array
c[2] = new Complex();            //Initialize
cout<<*c[2];                     //print by overloading <<

您的函數定義語法錯誤:

Complex Complex::const& operator[](unsigned int i) const{

返回類型應該由const&注釋,顯式名稱限定Complex::屬於函數名稱operator[]

Complex const& Complex::operator[](unsigned int i) const {

此外, 實現似乎是錯誤的:

const Complex* temp = this+i;
return *temp;

這沒有多大意義。 您可能沿着這些思路講了一些話:

Complex temp = *this + i;
return temp;

假設適當的operator+重載。 盡管在這里很難說出您真正想要的是哪種語義,因為無論如何對於Complex沒有直觀的索引訪問。

代替

Complex Complex::const& operator[](unsigned int i) const

它應該是

const Complex& Complex::operator[](unsigned int i) const

暫無
暫無

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

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