我有一個C++類,我需要通過添加一個新的私有屬性來擴展。我也需要這個不綁定到一個特定的類,所以我使用定義。我試圖做同樣的方式我添加新的方法,但它似乎沒有任何效果:如何通過使用swig(Python)添加新屬性來擴展C++類?
%define add_new_attribute(cls)
%extend MyClass {
int new_attribute;
};
%enddef
我真的不關心,如果新的屬性是私有還是公有,即使我寧願它是私人的。文件也沒有提到這方面的任何內容。還有另一種方法可以做到嗎?
編輯:
似乎是從的方法。然而實例化一個新的實例屬性,沒有問題。例如,這是可能的(這將創建一種迭代的,保持它的實例狀態):
%pythoncode %{
def mymethod(self):
self.i = self.__dict__.get('i',0)
self.i += 1
print self.i
%}
但是我真的需要這個代碼是C++,因爲我需要取消引用指針:)。
我不認爲這可以工作 - 它需要額外的存儲空間分配給SWIG無法觸及的部分代碼 – Flexo
爲什麼你需要它在C++中,除非它是一些C++數據結構? SWIG會將其插入到原始C++類之外的包裝文件中。 – subhacom