该问题基于以下问题:如何使用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
提交
取消