[玩代码之] 像脚本语言一样写C++

翡翠水滴 2013-01-17 05:37:15
疯狂的类型推导+虚函数+RTTI,会带来怎么样的东东?

最近写了一个好玩的类 object, 目标是可以像脚本语言一样,存放任意类型,做任意操作。目前完成了大半,有兴趣的朋友可以拿来玩玩。





这个类可以这么玩

1.void main()
2.{
3. using namespace lugce;
4.
5. /// 当字符串
6. std::stringzz="zz";
7. object zo="string";
8. std::cout << zo << std::endl;
9.
10. /// 当map
11. object omap;
12. omap["zz"]="Hello world";
13. omap[zo]="Hello world";
14. std::cout << zo <<" - " << omap["zz"] << std::endl;
15.
16. /// 当数字+计算
17. object iobj=15;
18. std::cout << ( iobj + 20 ) << std::endl;
19.
20. /// 当 vector
21. std::vector< std::string> vct;
22. vct.push_back("1");
23. vct.push_back("2");
24. objectob=std::move(vct);
25. ob.push( "3" );
26.
27. std::cout << ob[1] << std::endl;
28.}

当然,目前还是半成品,玩玩就可以了,别乱用啦。

需要支持 C++11 的编译器(我用的 VC 2012),当然,你也可以改代码让它支持老的编译器。

http://blog.csdn.net/jadedrip/article/details/8514311
...全文
581 24 打赏 收藏 举报
写回复
24 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
支持一下lz的研究精神
  • 打赏
  • 举报
回复
既然要新标准才能用,那么新标准里不已经有了个叫auto的类型么
  • 打赏
  • 举报
回复
Defonds 2013-02-07
这个有趣。Mark
  • 打赏
  • 举报
回复
healer_kx 2013-02-06
需要编译很长时间的时候,再怎么弱类型也不像脚本了。 再说了,脚本和弱类型不是一回事儿啊。
  • 打赏
  • 举报
回复
.net里也有Object类型
  • 打赏
  • 举报
回复
boost::any非常不错
  • 打赏
  • 举报
回复
翡翠水滴 2013-02-06
我说了,这个是研究性的,还不到实用的地步。只是告诉大家,代码还可以这么写,哈哈。
  • 打赏
  • 举报
回复
rocktyt 2013-01-31
看了下代码,必须是预先定义的类型才能放进object啊,不是任意类型
  • 打赏
  • 举报
回复
疯狂的红豆 2013-01-31
还达不到玩得转的地步,,,
  • 打赏
  • 举报
回复
Modeus 2013-01-31
引用 12 楼 jadedrip 的回复:
当然玩过 boost any, boost.any 虽然可以放任何东东,但它其实是强类型的。你不知道类型是取不出来的。
如果连写代码的人都不知道类型,取出来岂不是很危险?就算是动态语言,也要知道类型,不然怎么操作?比如把一个数组索引的操作用在整数类型上。 动态语言只不过相对让你自由一点,比如一个变量可以“废物利用”,存完数字,还可以改存字符串。 其实人家微软早就想出这玩意来了,COM的VARIANT就是支持很多种类型的。它能与动态语言交互,就说明它的效果了。
  • 打赏
  • 举报
回复
ppsharp 2013-01-30
能给个VS2012的下载链接不?
  • 打赏
  • 举报
回复
youyou1912 2013-01-30
强哦. 当vector用的话, 支持游标么? 我搜了一下, 好像没有iterator哦.
  • 打赏
  • 举报
回复
翡翠水滴 2013-01-22
当然玩过 boost any, boost.any 虽然可以放任何东东,但它其实是强类型的。你不知道类型是取不出来的。
  • 打赏
  • 举报
回复
chuachua66 2013-01-18
mark一下先
  • 打赏
  • 举报
回复
lee_鹿游原 2013-01-18
多谢楼主分享~
  • 打赏
  • 举报
回复
Enter空格 2013-01-18
是啊Boost::Any声明的东西,直接就是弱类型的玩意。
  • 打赏
  • 举报
回复
stereoMatching 2013-01-18
不知道楼主有没有玩过boost::any? 使用它来构建你的class,相信会让问题更简单
  • 打赏
  • 举报
回复
haha_ 2013-01-17
支持12345
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
mujiok2003 2013-01-17
源代码在线浏览有乱码,估计有中文注释。
  • 打赏
  • 举报
回复
加载更多回复
发帖
C++ 语言
加入

6.2w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
申请成为版主
帖子事件
创建了帖子
2013-01-17 05:37
社区公告
暂无公告