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

SWIG -- How can I ignore a templated C++ function?

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

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 可能代表的 class(假设现在是 class 数据):

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

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

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

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