将重载函数作为模板传递
我有这样的模板集
__Self &set(const char *name, lua_CFunction func)
{ return rawSet(name, FuncCall::create(func)); }
....
,我使用它:
.set("child_value", &pugi::xml_node::child_value)
但是 child_value 超载
const char_t* xml_node::child_value(const char_t* name) const
const char_t* xml_node::child_value() const
并且编译器给出了这个错误:
error C2668: 'SLB::Class<T,W>::set' : ambiguous call to overloaded function
我怎样才能修复这个错误?我想要 child_value() 版本。
I have this template set
__Self &set(const char *name, lua_CFunction func)
{ return rawSet(name, FuncCall::create(func)); }
....
that i use like:
.set("child_value", &pugi::xml_node::child_value)
But child_value is overloaded with
const char_t* xml_node::child_value(const char_t* name) const
const char_t* xml_node::child_value() const
and the compiler is giving this error:
error C2668: 'SLB::Class<T,W>::set' : ambiguous call to overloaded function
How could i fix this error ? I want the child_value() version.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
将 typedef 定义为:
然后编写:
Define typedefs as:
And then write:
我认为需要显式转换:
.set( "child_value", static_cast( &pugi::xml_node::child_value ) );
I think an explicit cast is needed:
.set( "child_value", static_cast<const char_t* (xml_node::*)() const>( &pugi::xml_node::child_value ) );
好的,
我自己做的。
然后,只需调用
OK,
I did it myself.
Then, just calls