导出模板功能

时间:2011-05-28 17:51:45

标签: c++ python templates boost export

我有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中使用该函数?

1 个答案:

答案 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