->연산자 오버로딩
글쓴이: ghoflvhxj / 작성시간: 수, 2018/07/18 - 1:41오후
template <typename T> class SmartPointer { private: T *ptr; public: SmartPointer(T *ptr) : ptr(ptr) {} ~SmartPointer() { if(ptr!=nullptr) delete ptr; } T& operator*() const { return *ptr; } T* operator->() const { return ptr; } }; ... SmartPointer<Point> sptr1(new Point(0, 0)); (sptr1.operator->())->ShowPosition(); //sptr1->->ShowPosition() 구문오류 발생! sptr1->ShowPosition();
위와 같이 스마트 포인터를 만들고 ->연산자를 오버로딩 사용을 할 때
sptr1->operator->()이 반환하는 것이 ptr이니까 주석처리 한 sptr1->->ShowPosition() 처럼 동작되야 할 거 같은데 구문오류가 발생하고 왜 sptr1->ShowPosition()이 맞는거죠?
글이 2개가 작성됬네요...? 삭제 버튼이 없어서 뻘줌하군요 껄껄
Forums:
댓글 달기