[問題] 請問讓 C++ 的 virtual fucntion 連到 Python 裡呢?

看板Python作者 (John)時間14年前 (2011/08/07 17:15), 編輯推噓1(109)
留言10則, 3人參與, 最新討論串1/1
(程式沒有 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

08/07 17:23, , 1F
You can't do that...
08/07 17:23, 1F

08/07 17:24, , 2F
只能把 C/C++ 掛到 Python 程式中, 沒有倒過來的
08/07 17:24, 2F

08/07 21:12, , 3F
所以 Boost 和 SWIG 沒有提供這個功能,是嗎?,我還沒
08/07 21:12, 3F

08/07 21:12, , 4F
仔細看過。
08/07 21:12, 4F

08/07 21:19, , 5F
Boost 有, Swig 不熟不過我猜應該也有吧
08/07 21:19, 5F

08/07 22:28, , 6F
boost 沒有提供吧? 好像沒有看過跟C++整得這麼緊密的工具。
08/07 22:28, 6F

08/07 22:28, , 7F
或許可以看看Cython
08/07 22:28, 7F

08/07 22:29, , 8F
uranusjr 就如你所說,boost 是讓 Python可以用C++.
08/07 22:29, 8F

08/07 22:30, , 9F
沒有反過來~
08/07 22:30, 9F

08/07 23:04, , 10F
Boost.Python 裡有個 extract 不行嗎?其實我也沒用過
08/07 23:04, 10F
文章代碼(AID): #1EFbUn1D (Python)
文章代碼(AID): #1EFbUn1D (Python)