여기서 [] 및 = 연산자를 오버로드하여 삽입 기능을 없애고 싶습니다. [] 연산자를 오버로드하여 값을 삽입 할 위치의 주소를 성공적으로 반환했습니다. 하지 않습니다, 원래의 코드가 변경하더라도, 배열 요소에 대한 포인터를 반환에서C++로 동시에 =과 [] 연산자를 오버로드 할 수 있습니다
int& operator[](int at)
:
#include<iostream>
using namespace std;
#define const maxSize = 30;
class ARRAY
{
private:
int *ar;
int end;
public:
ARRAY()
{
ar = new int[40];
end = -1;
}
void insert(int value)
{
end += 1;
ar[end] = value;
}
void insert(int value, int index)
{
if (index<30 && index >-1)
{
int tempEnd = end;
for (int i = end; i >= index; --i)
{
ar[tempEnd + 1] = ar[tempEnd];
tempEnd -= 1;
}
end += 1;
ar[index] = value;
}
else
cout << "\nOVERFLOW";
}
void remove(int index)
{
if (index >= 0 && index <= end)
{
for (int i = index; i < end; ++i){
ar[i] = ar[i + 1];
}
end -= 1;
//do something
}
else
cout << "\nNothing gonna happens";
}
void display()
{
for (int i = 0; i <=end; ++i)
cout << "\n" << ar[i];
}
int* operator[](int at)
{
if (at < 40){
end++;
return (&ar[at]);
}
}
//Here I want to do = operator overloading, How can I do this?
};
int main()
{
ARRAY arr;
arr.insert(1);
arr.insert(2);
arr.insert(3);
arr.insert(4);
arr.insert(5);
arr[5] = 10;
arr.display();
return 0;
}
클래스에'operator ='를 정의하면 해당 클래스의 메소드가 반환하는 것이 아닌 * 클래스 *에 대한 대입 연산자가 제공됩니다. 그래서 아니야. 그것은 불가능합니다. – doctorlove