我遇到一些问题让Luabind使用函数的'pure_out_value'属性。就我而言,Luabind在编译过程中出错,说模板不包含使用该属性所需的特定函数。
使用的代码与Luabind附带的test_policies.cpp非常相似:
class IConfiguration
{
int GetString( const char* className, const char* entryName, char** ppszOut );
};
module( L )
[
class_< IConfiguration >( "IConfiguration" )
.def( "GetString", &IConfiguration::GetString, pure_out_value(_3) )
];
我尝试编译时遇到的错误:
'apply' : is not a member of 'luabind::detail::pure_out_value_policy<N,Policies>::only_accepts_nonconst_references_or_pointers'
'consumed_args' : is not a member of 'luabind::detail::pure_out_value_policy<N,Policies>::only_accepts_nonconst_references_or_pointers'
'consumed_args' : is not a member of 'luabind::detail::pure_out_value_policy<N,Policies>::only_accepts_nonconst_references_or_pointers'
'converter_postcall' : is not a member of 'luabind::detail::pure_out_value_policy<N,Policies>::only_accepts_nonconst_references_or_pointers'
'match' : is not a member of 'luabind::detail::pure_out_value_policy<N,Policies>::only_accepts_nonconst_references_or_pointers'
有关环境的信息:
我也尝试使用Luabind for 5.2的公开修补版本(仍然支持5.1),可以在这里找到: https://bitbucket.org/cinderblocks/luabind
Luabind的其他人似乎工作正常,但不是pure_out_value政策。
答案 0 :(得分:1)
当然,在张贴求助后,我发现了问题。喜欢这种情况发生..
对于类似问题的任何人,问题在于我使用的pure_out_value的arg编号。在我的上述情况下,由于参数是类成员函数的一部分,我忘了考虑自动发生的'this'参数。所以不是_3而应该是_4。
现在很棒。 :)