C++ 实现类似java c#List的方法 boost::any的使用

重新学习C++,写代码遇到这么一个问题:

class Child:public Base
{
...一些Child类独有的数据和操作
};


Vector<Base> baseVec;
Child child;
baseVec.push_back(child);
问题在于如何获取beseVec里面的child赋给其他的Child对象?

因为Child类有自己独有的一些数据和操作,所以不能通过一个指向Child类的Base指针去访问,而标准C++又没有提供一个类似C#中的object基类,经过手机提问终于找到了解决方案,那就是用boost::any
要想用boost可没有那么简单,首先需要下载安装什么什么什么的。。。。。比较麻烦
还好找到一个方案 http://blog.csdn.net/clamreason/article/details/7071564
只需要下载一个安装程序,在线安装就行了,不过其中提到的LINK : fatal error LNK1104: cannot open file 'libboost_regex-vc100-mt-gd-1_51.lib'错误的解决办法,我试了试还是会报错,当然这个地方用不到boost::regex所以就可以忽略吧。
安装好boost以及拷贝boost文件夹去include目录后就可以使用了

#include "boost/any.hpp"
using boost::any_cast;

void func()
{
vector<boost::any> baseVec;
Child child1, child2;
baseVec.push_back(child);
child2 = any_cast<Child>(baseVec[0];
这样就ok了
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值