把Python嵌入C++的运算符重载的操作步骤详解

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_方法

相关推荐