I can fully understand why lua is not a good fit for this case, however, I would like to add some color to the picture.
The most powerful way to for C(++) - lua interop, is not the official CAPI but luajit/FFI: https://luajit.org/ext_ffi.html
This allows for allocation of C objects on the heap and on the stack and FAST function calls. Doing the same for C++ is possible but requires some work e.g. http://lua-users.org/lists/lua-l/2011-07/msg00492.html
Furthermore:
- unfamiliar syntax -- The syntax is tiny -- and I found nothing unexpected about it.
- no classes -- There are many class libraries available for lua. Just pick one. Used penlight classes quite a bit, without running into major issues.
- use tables for both hash tables and arrays. -- Yes. This is on the API side, under the hood hashes and arrays are used where appropriate.