該問題基于以下問題:如何使用swig實例化模板類的模板方法?。但是,與該問題相比,我嘗試包裝的代碼略有不同:class MyClass { public: template <class T> void f1(const string& firstArg, const T& value);};該MyClass的是一個普通的C ++類,一個模板函數F1。嘗試包裝MyClass :: f1 :,即Swig .i文件 %template(f1String) MyClass::f1<std::string>; 通過以上操作,Python客戶端可以執行o = MyClassstr1 = "A String"o.f1String("", str1)此接口要求Python客戶端了解所有不同的f1函數名,每個函數名根據類型而有所不同。不太干凈。可以通過重載,在接口文件中擴展來獲得更干凈的接口,例如%extend MyClass { void f1(const string& s, const string& s1){ $self->f1(s, s1); } void f1(const string& s, const int& anInt){ $self->f1(s, anInt); }}這允許這樣的客戶端代碼:o = MyClassstr1 = "A String"anInt = 34o.f1("", str1)o.f1("", anInt)問題是,有沒有辦法使用Swig在不擴展的情況下(通過擴展)獲取以上接口?
添加回答
舉報
0/150
提交
取消