Dlaczego w Cython możliwe jest owinięcieCython std :: pair z dwoma wskaźnikami, oczekuje identyfikator lub dosłownego
std::pair<int, Foo*> myPair;
ale nie
std::pair<Foo*,Bar*> myPair;
W szczególności, owijając w Cython się std::pair
odbywa co następuje:
pair[int, Foo*]
działa płynnie, ale gdy pierwszym elementem jest również wskaźnik, mam problem lemów:
pair[Foo*,Bar*] myPair2
Dostaję
pair[Foo*,Bar*] myPair2
^
------------------------------------------------------------
test.pyx:50:17: Expected an identifier or literal
używam Cython 0.17.1, g ++ 4.4 na Linuksie
Typy traktuje się tak samo w [definicji pary] (https://github.com/cython/cython/blob/master/Cython/Includes/libcpp/utility.pxd); jest to prawdopodobnie ogólne ograniczenie dla składni '[]'. Możesz spróbować obejść to za pomocą typedef: 'ctypedef Foo * Foo_pointer' – jfs
Wygląda na to, że ctypedef robi lewę, dzięki – linello
@ J.F.Sebastian: Powinieneś zrobić taką odpowiedź, aby mogła zostać zaakceptowana :-). –