免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1897 | 回复: 2
打印 上一主题 下一主题

[C++] 能有boost::any的指针吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-24 08:42 |只看该作者 |倒序浏览
比如,能否做出:
boost::any * func(){
  boost::any * ptr = static_cast<myobj *>( ....);
  return ptr;
}


然后 myptr = any_cast<myobj *>(func());

因为我只想把any当作一个通用对象使用,否则在delete时不知道它到底是什么类型的指针,无法any_cast。但这样编译后竟然提示:
An expression of type "myobj **" cannot be converted to type "myobj *"

这么会有这个怪类型?

而且若boost::any中存的是一个指针,我能 delete anyobj吗?不然该如何销毁?

[ 本帖最后由 jchc 于 2008-10-24 08:58 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-10-24 11:06 |只看该作者
any_cast返回的是模板参数ValueType的指针,如果模板参数为myobj *,返回的就是myobj **

    template<typename ValueType>
    ValueType * any_cast(any * operand)
    {
        return operand && operand->type() == typeid(ValueType)
                    ? &static_cast<any::holder<ValueType> *>(operand->content)->held
                    : 0;
    }

any是一个类啊,要是用any指针,也不能这么赋值啊,怎么也得先new 一个any吧。。。

[ 本帖最后由 kongkolvyu 于 2008-10-24 11:12 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-10-24 11:14 |只看该作者
谢谢。已经解决了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP