std::tr1::shared_ptr<Investment> pInv(createInvestment());
int daysHeld(const Investment *pi); // 투자 기간을 반환하는 함수
int days = daysHeld(pInv); // 오류 발생!
daysHeld는 Investment* 를 원하지만, pInv 는 std::tr1::shared_ptr<Investment> 타입이므로 직접 전달할 수 없음.1. Explicit Conversion (명시적 변환)
get() 멤버 함수를 사용하여 raw pointer를 얻음.int days = daysHeld(pInv.get());
get() 멤버 함수를 제공함.2.Implicit Conversion (암시적 변환)
operator T() 연산자 오버로딩class Font {
public:
explicit Font(FontHandle fh) : f(fh) {}
~Font() { releaseFont(f); }
operator FontHandle() const { return f; } // 암시적 변환 제공
private:
FontHandle f;
};
Font f(getFont());
changeFontSize(f, newSize); // Font 객체가 자동으로 FontHandle로 변환됨
💫Things to Remember