비공개
타입캐스팅 만들기( 변환 함수 )
닭꽝
2011. 9. 22. 10:44
※ 자신이 만든 클래스에서 다른 자료형과 호환되게 하기에 유용!
operator 변환타입()
{
/* code */
return 변환타입;
}
예시)
D3DXCOLOR -> DWORD 변환
D3DXCOLOR foo( 255.f, 123.f, 456.f, 255.f );
DWORD color = foo;
<d3dx9math.h>
typedef struct D3DXCOLOR
{
...
// casting
...
}
<dxdx9math.inl>
D3DXINLINE
D3DXCOLOR::operator DWORD () const
{
DWORD dwR = r >= 1.0f ? 0xff : r <= 0.0f ? 0x00 : (DWORD) (r * 255.0f + 0.5f);
DWORD dwG = g >= 1.0f ? 0xff : g <= 0.0f ? 0x00 : (DWORD) (g * 255.0f + 0.5f);
DWORD dwB = b >= 1.0f ? 0xff : b <= 0.0f ? 0x00 : (DWORD) (b * 255.0f + 0.5f);
DWORD dwA = a >= 1.0f ? 0xff : a <= 0.0f ? 0x00 : (DWORD) (a * 255.0f + 0.5f);
return (dwA << 24) | (dwR << 16) | (dwG << 8) | dwB;
}