窃听作为模板函数的类成员函数

该问题基于以下问题:如何使用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 = MyClass

str1 = "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 = MyClass

str1 = "A String"

anInt = 34

o.f1("", str1)

o.f1("", anInt)

问题是,有没有办法使用Swig在不扩展的情况下(通过扩展)获取以上接口?


白衣非少年
浏览 168回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python