C++11 スマート ポインターを使用してアプリケーションを書き直しています。
私は基本クラスを持っています:
class A {};
そして派生クラス:
class B : public A {
public:
int b;
};
A または B オブジェクトを持つベクトルを含む別のクラスがあります。
class C {
public:
vector<shared_ptr<A>> v;
};
A (基本クラス) オブジェクトを使用して C を構築することに問題はありませんが、B (派生クラス) オブジェクトを使用するにはどうすればよいですか?
私はこれを試しています:
for(int i = 0; i < 10; i++) {
v.push_back(make_shared<B>());
v.back()->b = 1;
};
そして、コンパイラは次を返します: エラー: 'クラス A' には 'b' という名前のメンバーがありません</p>