我正在使用SWIG來封裝C++代碼以便在Python測試框架中使用。我的問題是,我得到一個指向我需要調用方法的類的實例的指針。例如,我痛飲文件example.i內:如何使用swig包裝器調用C++類指針的方法?
iExample* getMyClassInstance();
...
class iExample
{
public:
virtual void somePureVirtualMethod() = 0;
// ...
};
現在,蟒蛇,如果我有課,我可以調用該方法
myClassInstance.somePureVirtualMethod()
不過,我實際上沒有一個當然,這個班的實例。我有一個由SWIG生成的不透明指針。我如何使用它?顯然,在Python,我不能做
myClassInstancePtr = example.getMyClassInstance()
myClassInstancePtr->somePureVirtualMethod()
我嘗試使用cpointer.i或pointer.i在痛飲產生指針的功能,但是這是沒有好,因爲它試圖創建類的副本。這甚至不能使用純虛擬方法編譯接口,即使我沒有使用純虛擬方法,我也不想創建該類的副本,我只想調用它的一些東西!
+1很好解釋。但是,SWIG的新手可能不知道如何使用%inline創建獨立.i(可能從一行評論中受益)。 – Schollii
對,我沒有意識到''。可以調用Swigged C到Python代碼中指針的方法。測試它,它的工作原理。如果你需要一個明確的順從,我的答案會做,但如果你只是想調用指針上的方法,假裝指針是一個引用,並使用'。'。 – m24p