필자는 본질적으로 몇 가지 추가 기능이있는 배열 인 IntArray 클래스를 작성해야합니다 (표시되지 않음). 연산자 오버로딩을 사용하여 요소를 IntArray 객체 내의 정수 배열에 할당해야합니다. 내 프로그램은 배열의 요소를 제대로 검색하지만 배열의 요소를 할당 할 수는 없습니다.'='연산자를 과부하하는 배열로 작업하려면 '='연산자를 제대로 오버로드합니까?
다음void IntArray::operator=(int i);
내 주요 방법입니다 :
#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;
}
나는 문제가이 함수 내에있는 가정 나는 또한 배열 인덱스에 액세스하는 방법을 잘 모르겠습니다
int main(){
IntArray a(0,1);
cout << a[0] << endl; //works fine
a[0] = 3; //does not work
}
합니다 (' 연산자 (int i) 함수에서 main()의 세 번째 줄에 '0'을 추가합니다. 도와 주셔서 감사합니다!
_'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