본문 바로가기

프로그래밍/Unreal

GetTypeHash의 구현

size_t GetTypeHash() const
{
    static size_t UniquePointer;
    return reinterpret_cast<size_t>(&UniquePointer);
}

 타입마다 스태틱 변수를 선언하고 이 값의 주소값을 반환하는 방식으로 짜여져 있다.

 FPrimitiveSceneProxy에 순수가상함수로 선언되어있어 구현 클래스에서 이를 구현해주어야 한다.

 

예제 코드

#include <iostream>

#define DECLARE_TYPEHASH \
    size_t GetTypeHash() const  \
    { \
        static size_t UniquePointer; \
        return reinterpret_cast<size_t>(&UniquePointer); \
    }
    
class A
{
public:
    DECLARE_TYPEHASH
};

class B
{
public:
    DECLARE_TYPEHASH
};

int main ()
{
    A a;
    B b;
    std::cout << "A TypeHash : " << a.GetTypeHash() << '\n';
    std::cout << "B TypeHash : " << b.GetTypeHash() << '\n';
    return 0;
}

결과 값 

Start
A TypeHash : 6296952
B TypeHash : 6296960
0
Finish