我的动态强制转换有继承问题。
我有一个基类Shape和一个偏离类的Rectangle。
在我的Rectangle.h文件中,我有以下
class Rectangle: public Shape
在我的主类中,我创建了一个名为record
的Shape类的向量std::vector<Shape> record;
在我的Shape.h文件中,我有虚函数computeArea()。
virtual double computeArea();
我的Rectangle.h文件包含函数double computeArea()
我正在尝试将Shape动态转换为Rectangle来计算区域
for(int i=0; i < record.size(); i++)
{
cout << record[i].getName() <<endl;
if(record[i].getName() == "Rectangle")
{
Rectangle& rectest = dynamic_cast<Rectangle&>(record[i]);
cout << rectest.computeArea() << endl;
}
}
然而,我得到了这个错误“在抛出'std :: bad_cast'的实例后调用终止what():std :: bad_cast aborted”
任何人都知道这可能是什么问题?
谢谢。