#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; }