作者photon3108 (John)
看板Python
标题[问题] 请问让 C++ 的 virtual fucntion 连到 Python 里呢?
时间Sun Aug 7 17:15:27 2011
(程式没有 Boost,也没有 swig 可以使用。)
问题大概是这样子,有一个 C++ Class,像是
-----------------------------------------------------
class Base
{
public:
virtual void VFTest()
{
printf( "VFTest from C++\n" );
}
};
-----------------------------------------------------
参考官网的教学,把 class Base 写的有点像 C Language,
现在可以做到在 Python 里 import,同时
b = Base()
b.VFTest()
也可以秀出 "VFTest from C++",(参考官网的教学而得),
但如果今天有一个 Python Class,像是
-----------------------------------------------------
class Derived( Base ):
def VFTest( self ):
print( "VFTest from Python" )
-----------------------------------------------------
C++ 的主程式要如何 call VFTest() 才能发挥 virtual function
的本能,从 C++ 穿过 Python,去秀出 "VFTest from Python" 呢?
(会是要自己弄 virtual table 吗?,那 Python 的 Function
pointer 要从哪拿到?)
Thanks
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.167.32.18
1F:→ uranusjr:You can't do that... 08/07 17:23
2F:→ uranusjr:只能把 C/C++ 挂到 Python 程式中, 没有倒过来的 08/07 17:24
3F:→ photon3108:所以 Boost 和 SWIG 没有提供这个功能,是吗?,我还没 08/07 21:12
4F:→ photon3108:仔细看过。 08/07 21:12
5F:→ uranusjr:Boost 有, Swig 不熟不过我猜应该也有吧 08/07 21:19
6F:推 timTan:boost 没有提供吧? 好像没有看过跟C++整得这麽紧密的工具。 08/07 22:28
7F:→ timTan:或许可以看看Cython 08/07 22:28
8F:→ timTan:uranusjr 就如你所说,boost 是让 Python可以用C++. 08/07 22:29
9F:→ timTan:没有反过来~ 08/07 22:30
10F:→ uranusjr:Boost.Python 里有个 extract 不行吗?其实我也没用过 08/07 23:04