我有templated function connect
:
template<class InstanceClass>
CL_Slot connect (InstanceClass *instance, void(InstanceClass::*function)(Param1, Param2))
它连接InstanceClass
的某些信号传递函数。
在我的示例中,我想为键盘事件(KeyDown)连接一些类。 在c ++中我写道:
get_signal_object().connect(&SomeClass::func);
但是我必须在python脚本中使用这个函数,从c ++代码导出(使用boost.python)。
据我所知,要导出模板,我必须通过任何使用的类型导出它。但是在python中,我将传递仅存在于python-namespace中的类。
那么,有什么想法如何在python中使用该函数?
答案 0 :(得分:1)
为什么不添加
extern template<>
CL_Slot connect<SomeClass> (SomeClass *instance, void(InstanceClass::*function)(Param1, Param2));
注意:extern可能需要在template<>
之后 - 不记得了
如果必须有C连接,请添加包装函数(它将内联模板化函数)。
注意:MSVC有nonstandard template export facilities
c ++ 0x即将支持extern模板:http://en.wikipedia.org/wiki/C%2B%2B0x#Extern_template