-2
から派生クラスのコンストラクタを呼び出す(コンストラクタ、デストラクタ、バーチャルなどと異なるコードを使用する)、A :: createChildを実装してBまたはCのいずれかのポインタを追加する方法基本クラス
#include <vector>
#include <cassert>
class A {
void createChild(std::vector<A *>);
};
void A::createChild(std::vector<A *>) {
//What code goes here?
}
class B : A {};
class C : A {};
int main() {
std::vector<A *> ptrs;
ptrs.push_back(new B);
ptrs.push_back(new C);
ptrs[0]->createChild(ptrs); //Should add a new class of B to ptrs
ptrs[1]->createChild(ptrs); //Should add a new class of C to ptrs
assert(typeid(ptrs[2])==typeid(ptrs[0]);
assert(typeid(ptrs[3])==typeid(ptrs[1]);
}
'A'と 'B'または 'C'との関係は何ですか? –
修正されました。 BとCは、あなたが正しいと答えた – user3117152
@ NathanOliverの子です。私はそれを誤解していた。 – Joshhw