处理多态类时,在Qt容器中使用std :: shared_ptr是不好的做法吗?

时间:2019-05-17 02:42:47

标签: c++ qt

鉴于Qt容器要求其值类型必须是可分配的,即它们必须定义默认构造函数X(),因此无法在这些容器中使用std::unique_ptr,因此,如果我认为我可以然后使用std::shared_ptr使容器的内容具有所需的多态行为。

假设我有以下情况:

class Base
{
public:
  virtual void foo();
};

class Derived1 : public Base
{
public:
  void foo();
};

class Derived2 : public Base
{
public:
  void foo();
};

QVector<std::shared_ptr<Base>> vec;

QVector可能将Derived1和Derived2的多个实例存储在一起,因此我希望它们的行为是多态的,但是我也希望这些资源能够自动管理。

因此,使用shared_ptr来解决此问题是一种不好的做法,因此我应该将QVector换成std::vector还是可以接受?

0 个答案:

没有答案