作者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
→ uranusjr:You can't do that... 08/07 17:23
→ uranusjr:只能把 C/C++ 掛到 Python 程式中, 沒有倒過來的 08/07 17:24
→ photon3108:所以 Boost 和 SWIG 沒有提供這個功能,是嗎?,我還沒 08/07 21:12
→ photon3108:仔細看過。 08/07 21:12
→ uranusjr:Boost 有, Swig 不熟不過我猜應該也有吧 08/07 21:19
推 timTan:boost 沒有提供吧? 好像沒有看過跟C++整得這麼緊密的工具。 08/07 22:28
→ timTan:或許可以看看Cython 08/07 22:28
→ timTan:uranusjr 就如你所說,boost 是讓 Python可以用C++. 08/07 22:29
→ timTan:沒有反過來~ 08/07 22:30
→ uranusjr:Boost.Python 裡有個 extract 不行嗎?其實我也沒用過 08/07 23:04