怎样将不同的类的对象集合起来
如题
我希望有一个类似数组的容器,将不同的类的对象装起来,集中管理;
这里的类都是继承自基类A的各式不同的类,而且还可能派生出新的子类;
大家有什么好的建议呢?
[解决办法]
[解决办法]
不是会丢失,只是你直接用A *访问不到。
如果你知道所有可能的子类,你可以让父类有一个成员标记这个对象到底是什么类的。然后你可以根据这个标记通过强转得到子类的指针。
- C/C++ code
struct A{ int type;};struct B : A{ int member_of_B;};A *a[10];...//a[0]->member_of_B; // 这是不行的。if (a[0]->type == 0) // 确定a[0]是B类型的对象指针{ B *b = (B *)a[0]; // 强制转换获得b b->member_of_B = 0;}
[解决办法]
楼主,c++ primer 后半部分提到你的问题了
自己招书看
一个容器存放 父类的指针 引发的问题
设计成智能指针。。。。
我以前没遇到这问题,还觉得作者多此一举,今天才发现,这个知识点是用处的