如何在Cython的C ++包装中处理双指针

时间:2016-11-04 01:17:32

标签: c++ cython

我有一个带有此签名的C ++对象,

Foo(const bool* const*, const int, const float=0.025);

我有相应的PYX文件

import numpy as np
cimport numpy as np

cdef extern from "foo.h":
    cdef cppclass Foo:
        Foo()
        Foo(int**, const int, const float=0.025)
        void mcq(int* &maxclique, int &sz) 

cdef class MyFoo:
    cdef Foo c_mxclik

    def __cinit__(self, int[:] b, int k, float x):
        self.c_mxclik = Foo(b,k,x)

哪个不起作用。我不明白如何通过Cython将Python的输入的const bool* const*部分转换为C ++代码。

我被困住了。谢谢!

1 个答案:

答案 0 :(得分:2)

首先,intbool通常大小不同,因此将int数组传递给期望数组{{1}的函数可能会很危险}第

我建议你改变你的Cython代码以匹配C ++签名。您可以使用

访问Cython中的C ++ bool
bool

其次,您只需要使用C风格的from libcpp cimport bool 运算符获取地址。您需要分两步完成(即首先设置&,然后获取该地址)。

bool*