JnX 2010-03-26
把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_方法