C++结构体:
typedef struct point_3d_t
{
double x;
double y;
double z;
point_3d_t(double x, double y, double z)
: x(x)
, y(y)
, z(z)
{}
} point_3d;
Cython封装器:
cdef extern from "./cppdar.hpp":
ctypedef struct point_3d:
point_3d(double, double, double)
double x;
double y;
double z;
现在,我期望能够通过类似于
cdef point_3d p1(v, v, v)
(在cython文件中)的方式构建结构体,但我似乎无法弄清楚如何让cython使用提供的构造函数。我尝试过:
cdef point_3d p1(v, v, v)
cdef point_3d p1 = point_3d(v, v, v)
cdef point_3d p1(0, 0, 0)
cdef point_3d p1 = point_3d(0, 0, 0)
v
是明确的cdef double v = 0
,但都没有成功。使用普通的
cdef point_3d p1
,p1.x = nnnn
等等,但那很麻烦,我认为我应该能够使用默认构造函数。尝试研究这个问题会产生很多与类构造函数相关的杂乱信息,这并没有帮助。
cdef point_3d p
然后稍后p=point_3d(...)
。您可能需要告诉它关于默认构造函数以及您使用的构造函数。 - DavidW