Rapptz / sol

A C++11 Lua wrapper

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Passing a `sol::table` fails as a parameter for `usertype` ctor

Nava2 opened this issue · comments

Currently, sol fails to pass a sol::table as a parameter to a usertype.

Minimum example:

class Foo {

public:
    Foo(sol::table /*table*/) { }
};

int main() {
    sol::state lua; 
    lua.new_usertype<Foo, sol::table>("Foo");
    lua.script("a = Foo.new { a = \"wat\" }");
}

The error message is: lua: error: No matching constructor for the arguments provided

Interestingly, this works fine:

        _lua.set_function("test_table", [](sol::table table) {
            std::string a = table["a"];
            std::cout << "table.a = " << a << std::endl;
        });
        _lua.script("test_table { a = \"wat\" }");

There was a bug in the logic for detecting whether or not a table was called with .new versus :new. This is fixed in sol2.