重新学习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了
}