丹丹丹丹~~~~ 发表于 2016-11-23 16:09:55

Python.boost 扩展C++库的类的函数

想用Python.boost映射C++库的类的函数,但是该类的构造函数是private私有的,且构造函数的类型不能修改,使用class_<a>("a",init<>())提示错误说该类的构造函数为private,不能调用。怎么办啊,各位大神们求助啊,急,在线等~

丹丹丹丹~~~~ 发表于 2016-11-23 16:17:38

C:\Users\Administrator\Desktop\2016-11-23_161419.png
C:\Users\Administrator\Desktop\2016-11-23_161436.png
代码如图

丹丹丹丹~~~~ 发表于 2016-11-23 16:20:22

class_<VOS_Msg>("VOS_Msg",init<>())
                .def("GetSenderTid",&VOS_Msg::GetSenderTid)
        ;
编译:
d:\boost_1_62_0\boost\python\object\value_holder.hpp(134) : error C2248: “VOS_Msg::VOS_Msg”: 无法访问 private 成员(在“VOS_Msg”类中声明)
1>      c:\users\administrator\desktop\python-test\vos.h(538) : 参见“VOS_Msg::VOS_Msg”的声明
1>      c:\users\administrator\desktop\python-test\vos.h(533) : 参见“VOS_Msg”的声明
1>      d:\boost_1_62_0\boost\python\object\make_instance.hpp(71): 参见对正在编译的函数 模板 实例化“boost::python::objects::value_holder<Value>::value_holder<boost::reference_wrapper<T>>(PyObject *,A0)”的引用
1>      with
1>      [
1>            Value=VOS_Msg,
1>            T=const VOS_Msg,
1>            A0=boost::reference_wrapper<const VOS_Msg>
1>      ]
1>      d:\boost_1_62_0\boost\python\object\make_instance.hpp(70): 编译类 模板 成员函数“boost::python::objects::value_holder<Value> *boost::python::objects::make_instance<T,Holder>::construct(void *,PyObject *,boost::reference_wrapper<const T>)”时
1>      with
1>      [
1>            Value=VOS_Msg,
1>            T=VOS_Msg,
1>            Holder=boost::python::objects::value_holder<VOS_Msg>
1>      ]
1>      d:\boost_1_62_0\boost\python\object\class_wrapper.hpp(29): 参见对正在编译的类 模板 实例化“boost::python::objects::make_instance<T,Holder>”的引用
1>      with
1>      [
1>            T=VOS_Msg,
1>            Holder=boost::python::objects::value_holder<VOS_Msg>
1>      ]
1>      d:\boost_1_62_0\boost\python\object\class_wrapper.hpp(28): 编译类 模板 成员函数“PyObject *boost::python::objects::class_cref_wrapper<Src,MakeInstance>::convert(const Src &)”时
1>      with
1>      [
1>            Src=VOS_Msg,
1>            MakeInstance=boost::python::objects::make_instance<VOS_Msg,boost::python::objects::value_holder<VOS_Msg>>
1>      ]
1>      d:\boost_1_62_0\boost\python\object\class_metadata.hpp(270): 参见对正在编译的类 模板 实例化“boost::python::objects::class_cref_wrapper<Src,MakeInstance>”的引用
1>      with
1>      [
1>            Src=VOS_Msg,
1>            MakeInstance=boost::python::objects::make_instance<VOS_Msg,boost::python::objects::value_holder<VOS_Msg>>
1>      ]
1>      d:\boost_1_62_0\boost\python\object\class_metadata.hpp(227): 参见对正在编译的函数 模板 实例化“void boost::python::objects::class_metadata<T,X1,X2,X3>::maybe_register_class_to_python<T2>(T2 *,boost::mpl::false_)”的引用
1>      with
1>      [
1>            T=VOS_Msg,
1>            X1=boost::python::detail::not_specified,
1>            X2=boost::python::detail::not_specified,
1>            X3=boost::python::detail::not_specified,
1>            T2=VOS_Msg
1>      ]
1>      d:\boost_1_62_0\boost\python\object\class_metadata.hpp(217): 参见对正在编译的函数 模板 实例化“void boost::python::objects::class_metadata<T,X1,X2,X3>::register_aux2<T,boost::integral_constant<bool,val>>(T2 *,Callback)”的引用
1>      with
1>      [
1>            T=VOS_Msg,
1>            X1=boost::python::detail::not_specified,
1>            X2=boost::python::detail::not_specified,
1>            X3=boost::python::detail::not_specified,
1>            val=false,
1>            T2=VOS_Msg,
1>            Callback=boost::integral_constant<bool,false>
1>      ]
1>      d:\boost_1_62_0\boost\python\object\class_metadata.hpp(215): 编译类 模板 成员函数“void boost::python::objects::class_metadata<T,X1,X2,X3>::register_aux(void *)”时
1>      with
1>      [
1>            T=VOS_Msg,
1>            X1=boost::python::detail::not_specified,
1>            X2=boost::python::detail::not_specified,
1>            X3=boost::python::detail::not_specified
1>      ]
1>      d:\boost_1_62_0\boost\python\class.hpp(174): 参见对正在编译的类 模板 实例化“boost::python::objects::class_metadata<T,X1,X2,X3>”的引用
1>      with
1>      [
1>            T=VOS_Msg,
1>            X1=boost::python::detail::not_specified,
1>            X2=boost::python::detail::not_specified,
1>            X3=boost::python::detail::not_specified
1>      ]
1>      d:\boost_1_62_0\boost\python\class.hpp(205): 参见对正在编译的类 模板 实例化“boost::python::class_<W>::id_vector”的引用
1>      with
1>      [
1>            W=VOS_Msg
1>      ]




Bugkiller 发表于 2016-11-24 14:26:45

66666
页: [1]
查看完整版本: Python.boost 扩展C++库的类的函数