[英]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.