->연산자 오버로딩
글쓴이: 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:


댓글 달기