2
Есть ли способ использовать make_shared
вместо shared_ptr
для абстрактных типов?make_shared и абстрактный полиморфизм
Пример:
#include <memory>
#include <vector>
class Foo
{
public:
virtual void fooFunc() = 0;
};
class Bar : public Foo
{
public:
void fooFunc() {};
};
int main()
{
std::vector< std::shared_ptr<Foo> > vec;
vec.push_back(std::shared_ptr<Foo>(new Bar()));
//vec.push_back(std::make_shared<Foo>(new Bar())); //doesn't work because Foo is abstract
return 0;
}
'make_shared' с' new' в любом случае является абсолютно неправильным - 'make_shared' уже выделяет хранилище для объекта. – Xeo