return arr[idx];
int& 형식에서 const int 형식 이니셜라이저로의 바인딩 참조에서 한정자가 삭제되었습니다.
라고 나오는데 이게 무슨말이야?
class BoundCheckIntArray
{
private:
int arr[5];
int arrlen;
BoundCheckIntArray(const BoundCheckIntArray &arr) { }
BoundCheckIntArray& operator=(const BoundCheckIntArray &arr) { }
public:
BoundCheckIntArray(int len) : arrlen(len)
{}
int& operator[](int idx) const
{
if(idx < 0 || idx >= arrlen)
{
cout << "Array index out of bound exception" << endl;
exit(1);
}
return arr[idx];
}
int GetArrLen() const { return arrlen; }
~BoundCheckIntArray() { delete []arr; }
};
형 맞게 던져주면되지
반환형하고 함수의 const 선언하고 상관이 있는거야?
으으 스샷이라 붙여넣기가 안되네요
수정했어 형
함수뒤 const 는 데이터 변경이 불가능하게 하려는 의도로 넣는것같은데 포인터를 반환시키면 데이터가 변경될 가능성이 있어서 저런 에러를 리턴하는게 아닐까 생각됨
그냥 새로 int를 반환하면 문제가 생기지 않는것도 이때문이 아닐까 하는
포인터 반환이 아니라 참조값 반환 아닌가요?
미안 ... 내가 병신이라서 그래
리턴값을 int&가 아니라 const int로 바꿔보세요.
ㅇㅇ님 왜 그렇게 해야되는지 알려주세요 ㅠ
Const없애 시발. &는 반환값이든 호출 값이든 참조 형태로 하니깐 const로 넘기면 참조하는 &기호와 const가 충돌 하니깐 둘중 하나를 없애야되는거