把Python嵌入C++的运算符重载中你如果在C++中对相关运算符重载后,把Boost.Python传给Python时,你就可以将以下的代码将Msg类的“+”运算符重载,然后通过“.def(self + self)”传递给Python。
- class Msg:public Message
- {
- public:
- int count;
- Msg(std::string m):Message(m)
- {
- }
- void setcount(int n)
- {
- count = n;
- }
- int getcount()
- {
- return count;
- }
- int operator+ (Msg x) const
- {
- int r;
- r = count + x.count;
- return r;
- }
- };
- BOOST_PYTHON_MODULE(Message)
- {
- class_<Message>("Message",init<std::string>())
- .add_property("msg",&Message::get,&Message::set);
- class_<Msg, bases<Message> >("Msg",init<std::string>())
- .def("setcount", &Msg::setcount)
- .def("getcount", &Msg::getcount)
- .def(self + self);
- }
把Python嵌入C++的运算符重载中对于其他的运算符重载也可以使用同样的方法,如下所示。
.def(self - self) // 相当于_sub_方法
.def(self * self) // 相当于_mul_方法
.def(self /self) // 相当于_div_方法
.def(self < self); // 相当于_lt_方法
以上就是对Python嵌入C++的运算符重载相关的内容的介绍,望你会有所收获。
【编辑推荐】