python如何进入模块_Boost.Python如何重新进入模块范围?

我将一些C++类暴露给具有嵌套的^ {{CD1}}的Python。查看在{{a1}和wiki.python.org上的示例文档,我不能看到一旦输入了一个范围,就返回到全局/模块范围。相反,每个后续作用域都嵌套在前一个作用域中。在

例如:#include

class Foo

{

public:

enum Choose { eFoo, eBar };

/* Default constructor with enum as required argument */

Foo(Choose choice): m_choice(choice) {}

~Foo() {}

Choose get() const { return m_choice; }

private:

const Choose m_choice;

};

class Bar

{

};

BOOST_PYTHON_MODULE(foo)

{

using namespace boost::python;

scope global;

/* Define Foo class, and a scope to go with it. */

scope in_Foo = class_

("Foo", init<:choose>())

.def("rovalue", &Foo::get)

;

/* Expose 'Choose' enum as Foo.Choose */

enum_<:choose>("Choose")

.value("Foo", Foo::eFoo)

.value("Bar", Foo::eBar)

;

/* How to get back to module scope?? */

global;

scope();

/* This currently is exposed as Foo.Bar, but should just be Bar */

class_("Bar", init<>())

;

}

我尝试过将global;行更改为各种内容,但结果都相同:

^{pr2}$

编辑:

又看了一眼wiki.python.org网站,似乎在上面的例子中,正确的答案应该是使用scope within(global)来恢复到模块级作用域。事实上,这对上面的例子是有效的。然而不幸的是,当我在实际应用程序中使用它时,我得到了一个编译错误。。在#include

using namespace boost;

BOOST_PYTHON_MODULE(foo)

{

python::scope module_level;

/* .... */

python::scope python::within(module_level);

/* ... */

}

编译错误:error: invalid use of qualified-name 'boost::python::within'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值