0
無法識別的模板類型我不能管理有從這樣的定義的有效痛飲輸出:痛飲:包含在矢量
std::vector< namespaceA::refPtr<namespaceB::myObj> >
首先,我有性病的自定義定義:: vector的
namespace std {
template<class T> class vector {
public:
typedef size_t size_type;
typedef T value_type;
typedef value_type const& const_reference;
/*
....
*/
%rename(add) push_back;
void push_back(const_reference x);
%extend {
const_reference get(int i) {
int size = int(self->size());
if (i>=0 && i<size)
return (*self)[i];
else
return *((T*)NULL);
}
void set(int i, const_reference val) {
int size = int(self->size());
if (i>=0 && i<size)
(*self)[i] = val;
}
}
};
}
在命名空間A中,有一個引用指針的模板。我們稱之爲refPtr
。 在命名空間B中,有一個名爲MyObj
的裁判計數類。
當我聲明對於ref計數對象的模板,SWIG輸出正確的接口:
%template(MyObjRefPtr) namespaceA::refPtr<namespaceB::MyObj> // OK
然後我聲明我的矢量:
%template(MyObjRefPtrVector) std::vector<MyObjRefPtr> > // compiles but inner types not resolved
它編譯和SWIG生成四種類型:
- SWIGTYPE_p_std_ vectorTnamespaceA _refPtrTna mespaceB__MyObj_t_t
- SWIGTYPE_p_MyObjRefPtr
- MyObjRefPtr
- MyObjRefPtrVector
生成的類MyObjRefPtr
是確定。 類別MyObjRefPtrVector
已生成,但方法add
,set
和get
取SWIGTYPE_p_MyObjRefPtr
作爲參數,而不是MyObjRefPtr
。
有人能告訴我我的代碼錯在哪裏嗎?我實在不明白它...