前提として、基底クラスBaseと、派生クラスA、Bがあります。
BaseUnitクラスでは、派生クラスA、Bのポインタが格納されたvectorがあります。
このBaseUnitクラスのvectorを、main関数の同じ型で別のvectorに実体をコピーしたいのですが、やり方がわからずうまくいきません。
以下のコードの出力結果は,
A val -> 1
A val -> 1
B val -> 2
になっているのですが、実体を別々に持って以下のような出力結果になるようにしたいです。
A val -> 0
A val -> 1
B val -> 2
初歩的な質問で申し訳ありませんが、よろしくお願いいたします。
c++
1class Base { 2 public: 3 virtual void print(){}; 4 virtual ~Base() = default; 5 6 int val; 7}; 8 9class A : public Base { 10 public: 11 void print() { cout << "A val -> " << val << endl; }; 12}; 13 14class B : public Base { 15 public: 16 void print() { cout << "B val -> " << val << endl; }; 17}; 18 19class BaseUnit { 20 public: 21 BaseUnit() { 22 units.push_back(new A()); 23 units.push_back(new B()); 24 } 25 26 vector<Base *> units; 27}; 28 29int main(){ 30 BaseUnit baseUnit; 31 vector<Base *> newUnits; 32 33 for(int i=0;i<3;i++){ 34 newUnits.push_back(new Base()); 35 if(i < 2){ 36 newUnits[i] = baseUnit.units[0]; 37 }else{ 38 newUnits[i] = baseUnit.units[1]; 39 } 40 newUnits[i]->val = i; 41 } 42 43 for(int i=0;i<newUnits.size();i++){ 44 newUnits[i]->print(); 45 } 46} 47
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/24 08:09