【发布时间】:2023-01-12 18:34:15
【问题描述】:
我正在尝试实现一个 Shape 类,它是几个形状的基类,如圆形、方形、直线等。 我应该如何为不常见的界面功能创建这种设计?例如,当我想为圆设置半径时,我必须编写一个 setRadius() 函数,但如果不将我的 Shape 指针转换为 Circle 指针,我将无法调用该函数。强制转换指针以访问派生类函数是个好主意吗?还是我应该用另一种方式来处理它?
class IShape {
virtual void getArea() = 0;
virtual void getPerimeter() = 0;
};
class Circle: public IShape {
void setRadius(int radius)
{
//...
}
};
int main ()
{
IShape *circlePtr = new Circle;
static_cast<Circle>(circlePtr)->setRadius(10);
}
那是我的实现,以这种方式实现它是个好主意吗?
【问题讨论】:
标签: c++ inheritance casting