Мне нужно написать класс IntArray, который по существу представляет собой массив с несколькими дополнительными функциями (не показан). Я должен использовать перегрузку оператора для назначения элементов массиву целых чисел внутри объекта IntArray. Моя программа правильно извлекает элементы в массиве, но не может назначать элементы в массиве.Как правильно перегрузить оператор '=' для работы с массивом, который перегружает оператор []?
#include <iostream>
using namespace std;
class IntArray{
int *data;
int SIZE;
int startIndex;
int endIndex;
public:
IntArray(int endI);
int operator[](int index);
void operator=(int i);
};
IntArray::IntArray(int endI){
SIZE = endI;
data = new int[SIZE];
endIndex = endI - 1;
startIndex = 0;
}
int IntArray::operator[](int index){
if(index > endIndex){
cout << "Error: Index out of bounds" << endl;
exit(0);
}
return data[index];
}
void IntArray::operator=(int i){
data[0] = i;
}
Я предполагаю, что проблема лежит в пределах этой функции:
void IntArray::operator=(int i);
Вот мой основной метод:
int main(){
IntArray a(0,1);
cout << a[0] << endl; //works fine
a[0] = 3; //does not work
}
Я также не уверен, как получить доступ к индексу массива (далее « 0 'на третьей строке main()) из функции operator = (int i). Спасибо за помощь!
_'return data [index - startIndex]; '_ Huh ??? –
Я не думаю, что вы хотите использовать operator = в классе массива. См. Http://stackoverflow.com/questions/3581981/overloading-the-c-indexing-subscript-operator-in-a-manner-that-allows-for-r –
Как правило, полезно возвращать 'IntArray &' средствами из 'return (* this)'. И под «Невозможно назначить» вы имеете в виду крах, или вы имеете в виду, что это не так? – M4rc