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죠
댓글 달기