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

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

本文关键字:C++ 函数 何忽略 SWIG      更新时间:2023-10-16

我有一个类似于这个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;
您可以使用

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

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

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