Rozpaczliwie próbuję odsłonić klasę klasy std::vector<bool>
na klasę Python.Problem z cytonem: 'bool' nie jest identyfikatorem typu
Oto moja klasa C++:
class Test
{
public:
std::vector<bool> test_fail;
std::vector<double> test_ok;
};
Podczas dostępu i przemiany test_ok
typu double
(lub int, float, ..) działa, to nie robi dla bool
!
Oto moja klasa Cython:
cdef class pyTest:
cdef Test* thisptr
cdef public vector[bool] test_fail
cdef public vector[double] test_ok
cdef __cinit__(self):
self.thisptr = new Test()
self.test_fail = self.thisptr.test_fail # compiles and works if commented
self.test_ok = self.thisptr.test_ok
cdef __dealloc__(self):
del self.thisptr
Błąd pojawia się:
Error compiling Cython file:
------------------------------------------------------------
...
cdef extern from *:
ctypedef bool X 'bool'
^
------------------------------------------------------------
vector.from_py:37:13: 'bool' is not a type identifier
Używam Pythona 2.7.6 i Cython 0.20.2 (próbował również 0.20.1) .
Próbowałem również z właściwościami, ale to też nie działa.
Addendum: Mam from libcpp cimport bool
na górze mojego pliku pyx, a także import wektora.
Co jest nie tak? Wierzę, że to może być błąd. Ktoś wie, jak to obejść? Dzięki.
Cython wiki jest bardzo pomocne dotyczące tej kwestii: Czy https://github.com/cython/cython/wiki/FAQ#id49 –