Python_boost: notas de estudio 2, con paquete de clase de constructor personalizado

用到的函数
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)

                ;



}

código de python

import boost_eg
c1 = boost_eg.Ctor("Bonjour") #使用第一个构造函数创建对象
print (c1.greet())
c2 = boost_eg.Ctor(3.141592654, 1.0) #使用第二个构造函数创建对象
print (c2.greet())

Resultado de la operación

Bonjour
3.14159:1
5 artículos originales publicados · Me gusta0 · Visitas 55

Supongo que te gusta

Origin blog.csdn.net/qq_40715157/article/details/105657041
Recomendado
Clasificación