私はベースクラス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);
は、今私は、ベクトルのすべての要素を越えると(のみB
年代が持っている)y
メンバーにアクセスしたい:
このコードは、実行時エラーです。どのように私はキャストとアクセスy
を行うことができます任意のアイデア?
あなたがすることはできませんがあります:ランタイム多型は、ポインタまたは参照
もう一つの重要な事柄を使用する必要があります。オブジェクトスライス(http://stackoverflow.com/questions/274626/what-is-object-slicing)が何であるかを見てください。 –