SWIG - 如何忽略模板化的C ++函数?

时间:2016-03-09 15:00:04

标签: c++ templates swig

我有一个类似于此的C ++类:

namespace ns {
    template<class T>
    class Wrapper {
    public:
        bool operator==(const Wrapper<T>& rhs) const;  
        // Other methods
    private:
        T mData;
    };
}

我想在SWIG / Python中包装它,但我不想包含相等运算符。我尝试过各种各样的事情:

%ignore ns::Wrapper::operator==;
%ignore ns::Wrapper::operator==(const ns::Wrapper&) const;

而且我也经历过T可能代表的课程(现在让我们说它是班级数据):

%ignore ns::Wrapper<Data>::operator(const ns::Wrapper<Data>&) const;
%template(WrappedData) ns::Wrapper<Data>;
%ignore WrappedData::operator==(const WrappedData&) const;

2 个答案:

答案 0 :(得分:2)

您可以使用以下%ignore指令之一,该指令必须在Wrapper类的声明之前(例如,在相应的%include指令之前):

  • %ignore ns::Wrapper::operator==;
  • %ignore ns::Wrapper<Data>::operator==;

答案 1 :(得分:1)

SWIG将自动忽略未完全定义为类的一部分的运算符。 (source)。将相等运算符重新定义为非成员函数。