【发布时间】:2011-06-25 04:33:27
【问题描述】:
我一直试图弄清楚如何在我的类中公开一个 boost::tuple 属性。元组定义如下:
typedef boost::shared_ptr<Action> action_ptr;
typedef boost::tuple<BattleCharacter*, action_ptr > ActionTargetTuple;
它包含在一个定义如下的类中:
class Action : public Cloneable<Action>
{
public:
//Irrelevant Code Omitted
std::vector<ActionTargetTuple> Targets;
}
在搜索如何将 boost::tuple 转换为 python 元组时,我看过很多文章,但这不是我想要做的。我希望能够访问 Action 类中存在的元组。 (我知道怎么做矢量部分)。
class_<Action, std::auto_ptr<ActionWrapper> >("Action")
.def("Targets", &Action::Targets)
;
我就像上面一样简单地公开它。我想我可以通过下面的一些变化来暴露它:
class_<ActionTargetTuple>("ActionTargetTuple")
.def("get", &ActionTargetTuple::get<int>, return_value_policy<reference_existing_object>())
;
然后使用 get from python,但是如果可以通过这种方式进行,我不确定设置需要是什么。有谁知道如何做到这一点/可以提出替代方案?
谢谢
【问题讨论】:
标签: c++ boost boost-python