1
我有一個基類A
和派生類B
。C++強制轉換爲基類
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](http://stackoverflow.com/questions/274626/what-is-object-slicing)是什麼。 –