小编rke*_*r78的帖子

基于变量的C++向下转换为派生类

假设我有一个基类"Shape",派生类"Triangle","Square"和"Circle"."Shape"的成员是int"shapeType".

如果shapeType == 1,则它是一个三角形.如果shapeType == 2,那么它就是一个正方形.如果shapeType == 3,那么它就是一个圆圈.

我有兴趣知道,如果有一种"Shape"对象曾经是派生对象,如果有一种方法可以通过使用shapeType值"动态"向下转换为正确的派生类.

我知道我可以做一个硬代码切换语句,大致如下:

Triangle* t;
Square* s;
Circle* c;

switch (shape->shapeType) {
case 1:
   t = (Triangle*)shape;
case 2: 
   ...
}
Run Code Online (Sandbox Code Playgroud)

但是,上面要求我制作一个每个派生类可能性的指针.我想知道是否有一种方法可以在不对每个类进行硬编码的情况下执行此操作,而是以某种方式确定类型类型映射,其中键是shapeType,值是类类型.

c++ inheritance casting

5
推荐指数
1
解决办法
9140
查看次数

标签 统计

c++ ×1

casting ×1

inheritance ×1