C++-如何去实现一个自定义类,这个类可以实现任意常规数据的插入

C++-如何去实现一个自定义类,这个类可以实现任意常规数据的插入

灵芸 发布于 2017-05-24 字数 187 浏览 1082 回复 2

例如: Valis data;

data<<1<<"aa"<<2.1<<false;
data[0] == 1, data[1] == "aa" data[2] == 2.1 data[3] == alse

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清晨说ぺ晚安 2017-09-21 2 楼

我觉得,C++作为一种强类型语言,同时对一些基本类型又缺乏足够的运行时信息,要想完全实现动态语言那样的弱类型效果的确比较困难。它只能在一定范围里实现“弱类型”:

要不,你把希望插入的数据类型统一封装成单一继承体系的类,然后自己重载<<和[]操作符,就能实现向容器中任意插入了;
否则,你可以借助std::vector<boost::any>这个容器,编译期静态实现:

std::vector<boost::any> v = boost::list_of<boost::any>(1)(2.1)(string("aa"));

或者在程序运行时动态push_back进去更多任意的类型。但是这样在遍历v的时候一样会遇到麻烦,因为boost::any需要我们在获取其值的时候明确指定要转换成的类型,因此,很难实现用统一的代码遍历。

只是一点儿思路 :-)

晚风撩人 2017-06-20 1 楼

似乎是要提供类似AS中的Array的功能哦。
1:你写的其实就是一个例子。。去看看cout的实现也就有思路了。
typedef basic_ostream<char, char_traits<char> > ostream;
2:Obj-C中的Array可以存放指向任意对象的指针,可以借鉴一下思路。
话说真有这个必要吗,这种需求应该是可以避开的吧。