안녕하세요 선생님~!
강의 정말 잘 보고 있습니다.
// 상속 관계 복사
template<typename U>
TSharedPtr(const TSharedPtr<U>& rhs)
{
Set(static_cast<T*>(rhs._ptr));
}
이 부분을 저는
같은 상속관계에 있는 애들끼리 서로 포인터를 공유할 수 있도록 하기 위해 존재한다고 이해했습니다.
class StrongMissile : public Missile
{
};
using StrongMissileRef = TSharedPtr<StrongMissile>;
MissileRef missile(new Missile());
StrongMissileRef strongMissile(new StrongMissile());
MissileRef m1 = strongMissile;
MissileRef m2 = strongMissile;
위와 같이 테스트를 해봤는데
pirvate 이라 rhs._ptr 에 접근할 수 없다고 오류가 발생하더라구요.
template<typename U>
TSharedPtr(const TSharedPtr<U>& rhs)
{
Set(static_cast<T*>(rhs.Get()));
}
public:
T* Get() const { return _ptr; }
그래서 위처럼 Get 함수를 만들어서 포인터를 넘겼는데
저렇게 T* 으로 포인터를 주면 위험해서 안되는건가요 ??
아니면 다른 방법이 있는건가요 ??
그게 아니라면 제가 잘못 이해하고 있는건가요 ??