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==;
我有一个类似于此的 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==;