用到的函数
boost::python::class_<T>("Tname",init<parameter>)
boost::python::.def(init<parameter>)
#include <string>
#include <sstream>
struct Ctor
{
Ctor(std::string msg) : mMsg(msg) {} //构造函数
Ctor(double x,double y) //重载构造函数
{
std::stringstream os;
os << x << ":" << y << std::ends;
set(os.str());
}
void set(std::string msg) { mMsg = msg; }
std::string greet() { return mMsg; }
std::string mMsg;
};
#include <boost/python.hpp>
using namespace boost::python;
BOOST_PYTHON_MODULE(boost_eg)
{
//boost::python::class_<T>("Tname",init<parameter>)
class_<Ctor>("Ctor", init<std::string>()) //导出含有构造函数的类
.def(init<double, double>()) //导入重载的构造函数
.def("greet", &Ctor::greet) //导入成员函数
.def("set", &Ctor::set)
;
}
python代码
import boost_eg
c1 = boost_eg.Ctor("Bonjour") #使用第一个构造函数创建对象
print (c1.greet())
c2 = boost_eg.Ctor(3.141592654, 1.0) #使用第二个构造函数创建对象
print (c2.greet())
运行结果
Bonjour
3.14159:1