2011-03-22 78 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在你的計劃。