小编Lab*_*ica的帖子

unique_ptr和shared_ptr的重载方法与多态性不一致

在我从前一个问题的答案中提示之后编写了一些东西,我遇到了重载Scene :: addObject的问题.

重申相关位并使其自包含,尽可能少的细节:

  • 我有继承对象的层次Interface,其中有FooS和BarS;
  • 我有一个Scene拥有这些物品的人;
  • Foos应该是unique_ptrs和Bars将shared_ptr在我的主要(由于前一个问题中解释的原因);
  • main它们传递到Scene实例,其取得所有权.

最小的代码示例是这样的:

#include <memory>
#include <utility>

class Interface
{
public:
  virtual ~Interface() = 0;
};

inline Interface::~Interface() {}

class Foo : public Interface
{
};

class Bar : public Interface
{
};

class Scene
{
public:
  void addObject(std::unique_ptr<Interface> obj);
//  void addObject(std::shared_ptr<Interface> obj);
};

void Scene::addObject(std::unique_ptr<Interface> obj)
{
}

//void …
Run Code Online (Sandbox Code Playgroud)

c++ overloading shared-ptr unique-ptr c++14

25
推荐指数
2
解决办法
1305
查看次数

标签 统计

c++ ×1

c++14 ×1

overloading ×1

shared-ptr ×1

unique-ptr ×1