为了账号安全,请及时绑定邮箱和手机立即绑定

将 C++ 枚举类暴露给 Python 代码时出错

将 C++ 枚举类暴露给 Python 代码时出错

jeck猫 2021-10-26 16:47:56
我必须将 C++ 枚举类公开到 python 中。我已经检查了一些例子,但都是关于 C 风格的enum类型。但是,我需要使用enum类。有什么建议吗?这是我的代码:zoo.hnamespace extzoo{namespace intzoo{class zoo{public:enum class Size{small, medium, large};const std::string hello_zoo();const std::string getname_zoo();const Size get_size();void set_size(Size);private:Size size;};}}zoo.cppusing namespace extzoo::intzoo;using namespace extzoo;const std::string zoo::hello_zoo() {return std::string("hello, zoo");}const std::string zoo::getname_zoo() {std::string input;std::cout<<"Please enter your favorit zoo name: ";std::getline(std::cin,input);return std::string("Your favorit zoo name is: ").append(input);}const zoo::Size zoo::get_size(){return this->size;}void zoo::set_size(zoo::Size s){this->size = s;}我将 C++ 方法暴露给 python 的代码pyintf.cppclass DummyZoo{};BOOST_PYTHON_MODULE(pyintf) {extzoo::intzoo::python::enum_<zoo::Size>("Size").value("small", zoo::small).value("medium", zoo::medium).value("large", zoo::large);scope intzoo= class_<DummyZoo>("intzoo");class_<intzoo::zoo>("zoo").def("hello_zoo", &extzoo::intzoo::zoo::hello_zoo).def("getname_zoo", &extzoo::intzoo::zoo::getname_zoo).def("get_size",&extzoo::intzoo::zoo::get_size).def("set_size",&extzoo::intzoo::zoo::set_size);}
查看完整描述

1 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

与您之前的SO 问题相同,问题是类方法定义未在名称空间内定义。使用using namespace ...是为了带来该命名空间内容的可见性,而不是定义该命名空间的内容。


查看完整回答
反对 回复 2021-10-26
  • 1 回答
  • 0 关注
  • 275 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号