Boost.Python包装私有析构函数的类:boost::python::object::value_holder<Value>::~value_holder()错误

26 篇文章 0 订阅

使用boost::python包装含有私有析构函数的类是行不通的。也就是说单例一般也是没办法直接包装的,当然可以曲线实现

编译出错如下:

boost\python\object\value_holder.hpp(134) : error C2248: “XXXCLASS::XXXCLASS”: 无法访问 private 成员(在“XXXCLASS”类中声明),参见XXXCLASS的声明,例如:

class A
{
    ~A(){}
}

也就是这个类不能直接在栈上实例化的,如果实例化对象,也会报c2248错误,无法访问private成员。

 

boost::python封装此类为啥报错:

Class template class_<T, Bases, HeldType, NonCopyable>这个模板类导出c++类时,导出的类时作为value_holer这个类的数据成员的,相当于实例化,所以会出现一开始的错误。

解决方法:

将这个类再包装一个普通类或者直接用c接口导出

 

私有析构的作用:

1、禁止用户调用delete删除此对象。容易多次调用delete产生非法行为

2、禁止实例化对象

构造私有作用:

1、构造函数如果也是私有的,在堆上也不允许创建对象。也不能派生子类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道格拉斯范朋克

播种花生牛奶自留田

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值