luabind с std::vector::at возвращает 'Попытка использовать незарегистрированный класс'

Я пытаюсь использовать luabind с std::vector. Я использую GCC 4.8.1 с C++11. Код конверсии показан ниже

template <typename T>
void luabindVector(lua_State* S, std::string tname) {
module(S)[class_<std::vector<T> >(tname.c_str()).def(constructor<>()).def(
        "pushBack",
        static_cast<void (std::vector<T>::*)(
                const T&)>(&std::vector<T>::push_back)).
                def("at",(T& (std::vector<T>::*)(size_t))(&std::vector<T>::at)).
                def("resize",static_cast<void (std::vector<T>::*)(size_t)>(&std::vector<T>::resize)).
                def("size",&std::vector<T>::size).
                def("assign",static_cast<void (std::vector<T>::*)(size_t, const T&)>(&std::vector<T>::assign))];
}

со следующими вызовами

luabindVector<double>(L,"vectorDouble");

В Lua у меня есть команды

tans = vectorDouble()
tans:resize(3)
a=tans:at(1)

которая выдает ошибку std::runtime_error: "Попытка использовать незарегистрированный класс" с ошибкой 2

Обратите внимание, что push_back, resize, size и назначить все работают правильно, но программа завершается ошибкой при вызове tans:at(1). Из документации не ясно, как я должен делать это правильно. Кто-нибудь знает, что я делаю не так?

0 ответов

Другие вопросы по тегам