【发布时间】:2013-08-13 17:56:03
【问题描述】:
有什么方法可以使用make_shared 而不是shared_ptr 作为抽象类型?
例子:
#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;
}
【问题讨论】:
标签: c++ c++11 polymorphism shared-ptr