我想用Cython Package 一个有比较运算符的C++结构:
struct myStruct {
float a;
float b;
float c;
float d;
bool operator==(const myStruct &myStr) const = default;
};
我正在努力弄清楚如何在Cython中执行操作符重载。
cdef struct myStruct:
np.float32_t a;
np.float32_t b;
np.float32_t c;
np.float32_t d;
# Operator overload???
我没有在struct的cython定义中指定运算符重载,构建成功了。我以为它会失败并出现错误。
1条答案
按热度按时间htrmnn0y1#
Cython只关心比较是否存在,而不关心比较是如何生成的,因此,不要告诉它有关
= default
的信息我没有在结构体的cython定义中指定运算符重载,构建成功了
不告诉Cython的唯一后果是您将无法在Cython中使用该操作符。
您遗漏了两件事。第一个运算符只能附加到
cppclass
,而不能附加到struct
,因此请更改:至
从Cython的Angular 来看,它实际上是用
class
还是struct
定义的并不重要--这只影响C++中的默认可访问性。第二,Cython在默认情况下不知道
bool
。