#pragma once inline void**& GetVirtualTable(void* baseclass) { return *reinterpret_cast(baseclass); } inline void* GetVirtualFunction(void* vftable, size_t index) { return reinterpret_cast(GetVirtualTable(vftable)[index]); } template inline Fn GetVirtualFunction(void* vftable, size_t index) { return reinterpret_cast(GetVirtualTable(vftable)[index]); }