#define SOL_ALL_SAFETIES_ON 1 #include <sol/sol.hpp> struct A { int a = 10; virtual int call() { return 0; } virtual ~A() { } }; struct B : A { int b = 11; virtual int call() override { return 20; } }; int main(int, char*[]) { sol::state lua; lua.new_usertype<B>("A", "call", &A::call); lua.new_usertype<B>("B", "call", &B::call, sol::base_classes, sol::bases<A>()); return 0; }