读书人

怎样将不同的类的对象集合起来,该如何

发布时间: 2012-02-21 16:26:23 作者: rapoo

怎样将不同的类的对象集合起来
如题
我希望有一个类似数组的容器,将不同的类的对象装起来,集中管理;
这里的类都是继承自基类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 后半部分提到你的问题了

自己招书看

一个容器存放 父类的指针 引发的问题

设计成智能指针。。。。



我以前没遇到这问题,还觉得作者多此一举,今天才发现,这个知识点是用处的



读书人网 >C++

热点推荐