2011-03-22 39 views
3

我想声明类似的东西:如何在Cython中声明一个指针向量?

cdef vector[Node*] list2node(list my_list): 

但用Cython给了我这个错误:

cdef vector[Node*] list2node(list my_list): 
       ^
------------------------------------------------------------ 

mod.pyx:77:20: Expected an identifier or literal 

回答

5

你不应该需要* - vector[Node]应节点指针的向量生成代码。使用用Cython 0.14.1:

cdef class Node: 
    pass 
cdef vector[Node] list2node(): 
    pass 
cdef vector[int] test_int(): 
    pass 
cdef vector[int*] test_intp(): 
    pass 

生成的C++代码:

static PyTypeObject *__pyx_ptype_3foo_Node = 0; 
static std::vector<struct __pyx_obj_3foo_Node *> __pyx_f_3foo_list2node(void); 
static std::vector<int> __pyx_f_3foo_test_int(void); 
static std::vector<int *> __pyx_f_3foo_test_intp(void); 
+2

谢谢你,这非常直观。 – Tarantula 2011-03-22 22:42:58

1

以从this SO answer答案,你应该做的是

ctypedef Node* Node_ptr 

,然后用Node_ptr在你的计划。