더북(TheBook)

이들 함수는 주어진 크기의 부호 없는 정수만 뒤집을 수 있으며 이외에 float, double, 부호 있는 정수, 열거자 등은 취급하지 않는다. 이런 자료형도 처리하려면 다음과 같이 다소 위험하지만 자료형 별칭(type aliaser) 클래스를 만들어 쓴다.

template <typename tFrom, typename tTo>
class TypeAliaser
{
public:
    TypeAliaser(tFrom inFromValue) :
        mAsFromType(inFromValue) { }
    tTo& Get() { return mAsToType; }
    
    union
    {
        tFrom mAsFromType;
        tTo mAsToType;
    }
};

이 클래스는 데이터를 특정 형, 이를테면 float로 받은 다음 이 데이터를 바이트 스와핑 함수에서 지원하는 형으로 바꿔 준다. 보조 함수 몇 가지를 템플릿으로 코드 4-4처럼 추가하면 모든 원시 자료형을 스와핑할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.