有个好奇的问题

欧阳春晖 2015-08-11 03:14:57
最近在纠结一个东西的异常机制的设计,突然想到一个问题,请教各位boost大神, 我们知道boost::any可以存储任意类型,那么可以在我不指定目标情况下由特殊机制完成any到任意类型的转换么,且不需要指定这个目标类型(从c++的语言特性上好像不可能,但还是想问问大家)
...全文
156 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
欧阳春晖 2015-08-11
  • 打赏
  • 举报
回复
引用 14 楼 flyrack 的回复:
[quote=引用 13 楼 jack960330 的回复:] 什么意思?
不可以看下Lua的源码 用C语言实现的动态无类型语言[/quote] lua?那个脚本?解释器?现在我是c++啊,不是lua啊
赵4老师 2015-08-11
  • 打赏
  • 举报
回复
些微参考一下Json ?
赵4老师 2015-08-11
  • 打赏
  • 举报
回复
些微参考一下Google ProtoBuf ?
jiqiang01234 2015-08-11
  • 打赏
  • 举报
回复
引用 15 楼 zhao4zhong1 的回复:
为什么不参考VARIANT的实现呢?
自定义的类型,如何用VARIANT转化?继承以后,再添加一个重载运算符?
赵4老师 2015-08-11
  • 打赏
  • 举报
回复
为什么不参考VARIANT的实现呢?
flyrack 2015-08-11
  • 打赏
  • 举报
回复
引用 13 楼 jack960330 的回复:
什么意思?
不可以看下Lua的源码 用C语言实现的动态无类型语言
欧阳春晖 2015-08-11
  • 打赏
  • 举报
回复
引用 12 楼 flyrack 的回复:
其实很简单 你自己写个类 class type{ int t; void* data; }; 然后自己管理类型的种类和内存就可以了,没比较折腾了那么麻烦
什么意思?
flyrack 2015-08-11
  • 打赏
  • 举报
回复
其实很简单 你自己写个类 class type{ int t; void* data; }; 然后自己管理类型的种类和内存就可以了,没比较折腾了那么麻烦
欧阳春晖 2015-08-11
  • 打赏
  • 举报
回复
引用 10 楼 jiqiang01234 的回复:
[quote=引用 7 楼 jack960330 的回复:] [quote=引用 5 楼 jiqiang01234 的回复:] 如此动态的特性,恐怕不应该是c++这种强类型语言要做的事情。
有个人和我提过类型映射表的思想,但是具体什么我不知道,也不好意思说(实际上他还说我一定弄不出,不过我也从来没想过要如何去做,目前并不是按这种方法去设计异常机制),不过还是有点好奇,想了下,感觉如果用他说的interface+any+bind的东西去弄,我后来也没管,现仔细想想,好像也没法完全做出我说的哪种,用户使用的时候不需要指定类型的那种便能自动转换,虽然有点不好意思,还是问问,也许我没想到那种思路吧,也许你们已经想到实现这个的思路了(C++我熟悉,但我可不敢保证什么都能第一时间想到实现的方法,哈哈)。[/quote] boost库的那些人精,如果真能实现如你所说的东西,估计应该会有相应的库出现。[/quote] 有一种就是编写个程序,根据你写的修改代码,类似qt的moc,不过太麻烦,编译时还必须加上这玩意
jiqiang01234 2015-08-11
  • 打赏
  • 举报
回复
引用 7 楼 jack960330 的回复:
[quote=引用 5 楼 jiqiang01234 的回复:] 如此动态的特性,恐怕不应该是c++这种强类型语言要做的事情。
有个人和我提过类型映射表的思想,但是具体什么我不知道,也不好意思说(实际上他还说我一定弄不出,不过我也从来没想过要如何去做,目前并不是按这种方法去设计异常机制),不过还是有点好奇,想了下,感觉如果用他说的interface+any+bind的东西去弄,我后来也没管,现仔细想想,好像也没法完全做出我说的哪种,用户使用的时候不需要指定类型的那种便能自动转换,虽然有点不好意思,还是问问,也许我没想到那种思路吧,也许你们已经想到实现这个的思路了(C++我熟悉,但我可不敢保证什么都能第一时间想到实现的方法,哈哈)。[/quote] boost库的那些人精,如果真能实现如你所说的东西,估计应该会有相应的库出现。
欧阳春晖 2015-08-11
  • 打赏
  • 举报
回复
引用 8 楼 jiqiang01234 的回复:
模板元太高大上,不懂。模板本身就是和类型紧密绑定的东西, 无论如何也不能去掉类型信息。
主要是不能单独保存类型信息并根据类型信息动态转换,哈哈,他说要注册类型,有时间研究他的yggrsail下,如果有人有具体思路或者知道可行与不可行,也可以直接跟帖 不过我想到一种另外的思路,就是编写预处理器,搞成qt那种moc,哈哈
jiqiang01234 2015-08-11
  • 打赏
  • 举报
回复
模板元太高大上,不懂。模板本身就是和类型紧密绑定的东西, 无论如何也不能去掉类型信息。
欧阳春晖 2015-08-11
  • 打赏
  • 举报
回复
引用 5 楼 jiqiang01234 的回复:
如此动态的特性,恐怕不应该是c++这种强类型语言要做的事情。
有个人和我提过类型映射表的思想,但是具体什么我不知道,也不好意思说(实际上他还说我一定弄不出,不过我也从来没想过要如何去做,目前并不是按这种方法去设计异常机制),不过还是有点好奇,想了下,感觉如果用他说的interface+any+bind的东西去弄,我后来也没管,现仔细想想,好像也没法完全做出我说的哪种,用户使用的时候不需要指定类型的那种便能自动转换,虽然有点不好意思,还是问问,也许我没想到那种思路吧,也许你们已经想到实现这个的思路了(C++我熟悉,但我可不敢保证什么都能第一时间想到实现的方法,哈哈)。
欧阳春晖 2015-08-11
  • 打赏
  • 举报
回复
引用 5 楼 jiqiang01234 的回复:
如此动态的特性,恐怕不应该是c++这种强类型语言要做的事情。
用模板元可以么
jiqiang01234 2015-08-11
  • 打赏
  • 举报
回复
如此动态的特性,恐怕不应该是c++这种强类型语言要做的事情。
欧阳春晖 2015-08-11
  • 打赏
  • 举报
回复
引用 3 楼 jiqiang01234 的回复:
不可能,boost::any通过类型擦除才能保存任意类型的数据,在还原的时候必须指定类型
有没有什么技巧在使用的时候根据运行时类型(类型不可控,可能是用户自己定义的),用户不不指定类型,实现也能自动完成转换?
jiqiang01234 2015-08-11
  • 打赏
  • 举报
回复
不可能,boost::any通过类型擦除才能保存任意类型的数据,在还原的时候必须指定类型
欧阳春晖 2015-08-11
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
你别老发这种行不,我倒,谁不知道电脑的内存只是二进制,电脑白痴都知道,何况我还是学编程的,基础不会这么差吧?c++语言的基础我还是没啥问题(就算有,遇到一次也没问题了)的,电脑我还是很熟悉的。
赵4老师 2015-08-11
  • 打赏
  • 举报
回复
电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧