动态转换c ++继承问题

时间:2016-10-30 11:31:09

标签: c++ inheritance

我的动态强制转换有继承问题。

我有一个基类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”

任何人都知道这可能是什么问题?

谢谢。

0 个答案:

没有答案