我必须将 C++ 枚举类公开到 python 中。我已经检查了一些例子,但都是关于 C 风格的enum类型。但是,我需要使用enum类。有什么建议吗?
这是我的代码:
zoo.h
namespace 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.cpp
using 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.cpp
class 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)
;
}
HUH函数
相关分类