0

Я хочу переопределить оператор индекса массива в моем классе. Вот что я пытаюсь сделать, но не преуспеваю.переопределить оператор индекса массива

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; 
} 

EDIT: Я хочу сделать что-то вроде:

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

Что это делать? В чем проблема с этим кодом? – slugonamission

+0

вместо комплексного комплекса :: const & operator [], Complex const Complex :: operator [] –

+0

Что это значит: вы не преуспеваете? – Spook

ответ

3

синтаксиса определения функции является неправильным:

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 в любом случае.

+0

Я хотел бы создать массив указателей, т. Е. 2D-массив класса Complex, объявив мои собственные новые, delete и [] operaors. – 2013-02-12 10:56:40

1

Вместо

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

Это должно быть

const Complex& Complex::operator[](unsigned int i) const 
Смежные вопросы