gpt4 book ai didi

c++ - Luabind 编译时错误 Unable to deduce template argument

转载 作者:行者123 更新时间:2023-11-28 02:40:53 26 4
gpt4 key购买 nike

我得到了一个我不理解的编译时错误列表。我正在使用 sourceforge 的 luabind 库,版本 0.9.1,我正在尝试从 MyGUI 绑定(bind)函数,我正在使用 Visual Studio 2012 和 Lua 5.1。错误出现在下面的 cpp 代码的编译过程中,尽管似乎起源于其他文件。这些错误让我觉得我没有在某处正确定义签名,但我的 IntelliSense 并未指示任何此类问题。

有问题的代码:

LuaMachine.cpp (stackoverflow 提示 body length,所以我把它放在 pastebin 上)

给出的错误:

Error   4   error C2780: 'void luabind::detail::value_wrapper_converter<U>::apply(lua_State *,const T &)' : expects 2 arguments - 3 provided    c:\users\jake kiesel\space-junk\c++ project\3rdpartycode\include\luabind\detail\call.hpp    293 1   Space Junk
Error 3 error C2784: 'int luabind::detail::value_wrapper_converter<U>::match(lua_State *,luabind::detail::by_const_reference<T>,int)' : could not deduce template argument for 'luabind::detail::by_const_reference<T>' from 'luabind::detail::by_reference<T>' c:\users\jake kiesel\space-junk\c++ project\3rdpartycode\include\boost\preprocessor\iteration\detail\local.hpp 34 1 Space Junk
Error 2 error C2784: 'int luabind::detail::value_wrapper_converter<U>::match(lua_State *,luabind::detail::by_value<T>,int)' : could not deduce template argument for 'luabind::detail::by_value<T>' from 'luabind::detail::by_reference<T>' c:\users\jake kiesel\space-junk\c++ project\3rdpartycode\include\boost\preprocessor\iteration\detail\local.hpp 34 1 Space Junk
Error 6 error C2784: 'T luabind::detail::value_wrapper_converter<U>::apply(lua_State *,luabind::detail::by_const_reference<T>,int)' : could not deduce template argument for 'luabind::detail::by_const_reference<T>' from 'luabind::detail::by_reference<T>' c:\users\jake kiesel\space-junk\c++ project\3rdpartycode\include\luabind\detail\call.hpp 293 1 Space Junk
Error 5 error C2784: 'T luabind::detail::value_wrapper_converter<U>::apply(lua_State *,luabind::detail::by_value<T>,int)' : could not deduce template argument for 'luabind::detail::by_value<T>' from 'luabind::detail::by_reference<T>' c:\users\jake kiesel\space-junk\c++ project\3rdpartycode\include\luabind\detail\call.hpp 293 1 Space Junk

编辑:

通过进一步研究,我发现以下是触发这些错误的问题行。这些行在 wrapGuiManager 函数中。

luabind::def("destroyWidgets", &MyGUIManager::destroyWidgets)

luabind::def("unloadLayout", &MyGUIManager::unloadLayout),

这些是这些函数的函数声明:

void unloadLayout(luabind::object& table);

void destroyWidgets(luabind::object& table);

这两个函数的独特之处在于它们采用 luabind::object& 参数。他们应该能够从 Lua 中获取一个表,该表用作一个充满 MyGUI 小部件的数组。

最佳答案

我成功了! :D 问题行是

luabind::def("destroyWidgets", &MyGUIManager::destroyWidgets)

luabind::def("unloadLayout", &MyGUIManager::unloadLayout)

这两个函数都采用了 luabind::object&,不过 luabind 不想与它们合作,而是希望函数采用 luabind::object 而不是一个引用,只是对象本身。所以正确的函数声明应该是:

void unloadLayout(luabind::object table);
void destroyWidgets(luabind::object table);

关于c++ - Luabind 编译时错误 Unable to deduce template argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26041922/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com