51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2331|回复: 3
打印 上一主题 下一主题

[求助] Python.boost 扩展C++库的类的函数

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-11-23 16:09:55 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
想用Python.boost映射C++库的类的函数,但是该类的构造函数是private私有的,且构造函数的类型不能修改,使用class_<a>("a",init<>())提示错误说该类的构造函数为private,不能调用。怎么办啊,各位大神们求助啊,急,在线等~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 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:bjects::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:bjects::value_holder<Value> *boost::python:bjects::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:bjects::value_holder<VOS_Msg>
1>        ]
1>        d:\boost_1_62_0\boost\python\object\class_wrapper.hpp(29): 参见对正在编译的类 模板 实例化“boost::python:bjects::make_instance<T,Holder>”的引用
1>        with
1>        [
1>            T=VOS_Msg,
1>            Holder=boost::python:bjects::value_holder<VOS_Msg>
1>        ]
1>        d:\boost_1_62_0\boost\python\object\class_wrapper.hpp(28): 编译类 模板 成员函数“PyObject *boost::python:bjects::class_cref_wrapper<Src,MakeInstance>::convert(const Src &)”时
1>        with
1>        [
1>            Src=VOS_Msg,
1>            MakeInstance=boost::python:bjects::make_instance<VOS_Msg,boost::python:bjects::value_holder<VOS_Msg>>
1>        ]
1>        d:\boost_1_62_0\boost\python\object\class_metadata.hpp(270): 参见对正在编译的类 模板 实例化“boost::python:bjects::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>        ]




回复 支持 反对

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2016-11-23 16:17:38 | 只看该作者
C:\Users\Administrator\Desktop\2016-11-23_161419.png
C:\Users\Administrator\Desktop\2016-11-23_161436.png
代码如图
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-8 02:54 , Processed in 0.065716 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表