编辑:解决,我的错误;在我的答案中解释。在SWIG for Python中包装std :: boost :: shared_ptr的向量
我有这样的:
std::vector < boost::shared_ptr <Entity> > entities;
我尝试通过痛饮这样的揭露它:
%include "boost_shared_ptr.i"
%include "std_vector.i"
%shared_ptr(Entity)
%include <Entity.h>
namespace std {
%template(EntityVector) vector<boost::shared_ptr<Entity> >;
};
%include <TheFileWithEntities.h>
然而,在Python实体结束是一个元组:
import MyModule
print type(MyModule.cvar.entities)
# Output: (type 'tuple')
我已经谷歌搜索这个,但找不到任何具体的例子如何包装这个。一页给出了一个用于包装C#的小例子,但对我来说并没有帮助。
任何帮助,非常感谢。
感谢您的回应,但正如您在我的问题中所看到的,我已经知道如何包装std :: vector。问题是包装一个boost :: shared_ptr的std :: vector。 SWIG似乎将它暴露为一个元组,因为它无法找出它的shared_ptr部分。 – morrog 2011-04-04 21:32:34
您是否看到过这样的内容:http://www.swig.org/Doc1.3/SWIGPlus.html#SWIGPlus_nn34 – sehe 2011-04-04 21:35:14
是的,谢谢,我已阅读过,但没有看到任何相关内容。再次,我可以包装boost :: shared_ptr,我可以包装std :: vector,并按预期工作。这个问题具体是std :: vector>,它在Python中显示为一个元组。 Python可以访问元组,查看其中的内容,操纵元组内的单个实体,但不能追加或修改它,因为它是一个元组。 –
morrog
2011-04-05 01:22:47