意外结果迭代提升::p ython vector_indexing_suite
unexpected result iterating over a boost::python vector_indexing_suite
我已经成功地包装了一个名为复合的类。此类具有以下方法:
std::vector<Composite*> Composite::getChildren();
我尝试使用vector_indexing_suite包装返回的 std::vector,方式如下:[片段]
typedef std::vector<Composite*> CompositeArray;
BOOST_PYTHON_MODULE(composite)
{
class_<CompositeArray>("CompositeArray")
.def(vector_indexing_suite<CompositeArray, true>());
class_<Composite>("Composite", init<>())
... more wrapper
.def("getChildren", &Composite::getChildren)
... more wrapper
;
}
现在一切似乎都正常工作,当我从 python 调用 getChildren() 方法时,它会正确返回一个包装的 CompositeArray。我可以做,例如:
from composite import Composite
myComp = Composite()
myComp.addChild('childA')
myComp.addChild('childB')
len(myComp.getChildren()) #returns 2
myComp.getChildren()[0] # returns the first child of type Composite
但是当我尝试迭代复合数组时,就像这样:
for child in myComp.getChildren():
# do something with child...
我收到此错误消息:
TypeError: No to_python (by-value) converter found for C++ type: class Composite * __ptr64
这对我来说没有任何意义,考虑到按索引访问非常有效!我被困在这个...你知道我做错了什么吗?
谢谢。
尝试
class_<Composite, Composite*>("Composite", init<>())
而不是
class_<Composite>("Composite", init<>())
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- valgrind-hellgrind与泄漏检查的结果不同
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中用vector填充一个简单的动态数组
- vector.resize()中的分配错误
- ";结果类型必须是可从输入范围的值类型""构造的;创建std::vector时
- 从返回 std::optional of std::vector 的函数中获取结果到调用方
- 使用 std ::transform 构造 std::vector.返回未命名结果的可能性?
- 为什么 std::when_any 使用 std::tuple 而不是 std::vector 作为其结果类型?
- std::vector 在 Linux 和 Windows 中给出了不同的结果
- boost::d ynamic_bitset 与 std::vector 的结果不一致<bool>?
- 从函数的返回值将元素C++存储到 std::vector 中时出现意外结果
- 使用两种不同的方法遍历 Vector 的结果不一致
- 为什么 std::sort 默认假定 std::vector< std::vector<int> >为 std::vector,从而产生错误的结果?
- C++ vector.end() 给出超出范围的结果 - 请告知
- 如何在 std::vector 中查找重复项<strings>并返回一个 std::list 它们按字母顺序排序,在该结果列表中没有重复项
- 可以将vector.size()的结果存储到int类型的变量中吗
- vector::insert在VS2010中执行意想不到的结果
- Auto it = vector.begin()结果类型不能转换为const_iterator
- Std::vector::insert给出意外的结果