LINUX.ORG.RU

Сообщения deadskif

 

Ниасилил C++ vector<unique_ptr<T>> list initialization

Допустим есть у нас следующее:

#include <memory>
#include <vector>
#include <iostream>
using namespace std;

class Base {
        int i;
    public:
        Base(int ai) : i(ai){}
        virtual ~Base() {}
        virtual void m() {
            cout << "Base::m() " << i << endl;
        }
};
class A : public Base {
    public:
        A() : Base(1) {}
        virtual ~A() {}
};
class B : public Base {
        char c;
    public:
        B(char ac) : Base(2), c(ac) {}
        virtual ~B() {}
        virtual void m() {
            Base::m();
            cout << "B::m() " << c << endl;
        }
};

int main(){
    vector<unique_ptr<Base>> v{
        /* ??? */
    };
    for (auto& a : v)
        a->m();
}

Что нужно написать, что бы инициализировать v значениями new Base(10), new A(), new B('x')?

make_unique<Base>(), unqiue_ptr<Base>(new ??()) не работают.

 ,

deadskif ()

RSS подписка на новые темы