#include #include using namespace FunctionHooking; VTable* virtual_hook; class Base { public: virtual void test() {}; Base() = default; }; class Inherited : public Base { public: void test() override { std::cout << "test original" << std::endl; } Inherited() = default; }; void vtable_hook_function() { std::cout << "vtable hook function." << std::endl; virtual_hook->CallOriginal(); } int main() { auto* some_class = new Inherited(); virtual_hook = new VTable(some_class, 0, (void*) vtable_hook_function ); some_class->test(); std::cout << virtual_hook->Valid() << std::endl; delete virtual_hook; delete some_class; }