c++ 첨자연산자의 덧셈
글쓴이: zlzlzl315 / 작성시간: 금, 2020/11/27 - 1:49오후
a[2] = a[1] + a[0]; std::cout << a[2];
에서 operator[] 에서 return 값이 정수배열이니까 +과 <<를 할수 있는거 아닌가요?
#include <iostream>
class plus
{
int size;
int* ptr;
public:
plus(int n)
:size{ n }
{
ptr = new int[size];
}
plus operator[](int i)
{
return ptr[i];
}
};
int main()
{
int n;
std::cin >> n;
plus a{ n };
a[0] = 1;
a[1] = 1;
a[2] = a[1] + a[0];
std::cout << a[2];
return 0;
}Forums:


Quote:operator[] 에서 return 값이
아닌데요.
plus::operator[]의 반환값 타입은plus입니다.+와 <<가 불가능하죠.
그러면 operator+,<<를 추가해줘야 하나요?
멤버 함수를 더 추가하지 않고 코드를 고치는 방법은 없나요 ㅠㅠ
방법이야 수도 없이 많을 수 있지요.
방법이야 수도 없이 많을 수 있지요.
문제는 프로그래머의 의도를 알 수가 없다는 겁니다. 대체 뭐가 하고 싶은 건데요?
이런 거?
해결했습니다!
plus를 int&로 바꾸면되네요 감사합니다~
operator[]에서 ptr[i]는 plus가
operator[]에서 ptr[i]는 plus가 아니라 int죠
댓글 달기