【发布时间】:2017-08-12 05:38:21
【问题描述】:
我有一个基类A 和一个派生类B。
class A {
public:
int x;
virtual int getX() {
return x;
}
};
class B : public A {
public:
int y;
};
虚函数只是为了使其具有多态性。
接下来我声明A 的列表,但将B 放在里面:
vector<A> list;
B b1,b2;
b1.y = 2;
b2.x = 10;
list.push_back(b1);
list.push_back(b2);
现在我想检查向量上的所有元素并访问y 成员(只有B 有):
for (auto it = list.begin(); it != list.end(); ++it) {
B &cast = dynamic_cast<B&>(*it);
int value = cast.y;
std::cout << value << std::endl;
}
此代码给出运行时错误。知道如何进行演员表并访问y吗?
【问题讨论】:
-
你不能。看看object slicing是什么。
标签: c++ casting polymorphism