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
。
有人能告诉我我的代码错在哪里吗?我实在不明白它...