使用派生的 class 方法和 unique_ptr 到基础 class

Use derived class methods with unique_ptr to base class

我有一个 Base class 和多个 Derived classes(有它们自己的 .h 和 .cpp 文件)看起来像这样

class Base {
    // Base stuff
}

class Derived : public Base {
   public:
   derivedOnlyFunc();
}

class SecondDerived : public Base {
   public:
   derivedOnlyFunc2();
}

在我的主文件中,我有一个指向派生对象的唯一指针向量。但是,我想调用 derivedOnlyFunc()。

vector <unique_ptr<Base>> baseVector = {new Derived(), new Derived()}

for (auto object : baseVector)
    // Want to use object.derivedOnlyFunc() here

我无法将 baseVector 更改为 unique_ptr Derived 的向量,因为它将包含多个派生 class。如何使用派生的 class 函数?

动态转换通常是您想要的这种模式

if (auto der = dynamic_cast<Derived *>(object.get()))
    der->derivedOnlyFunc();
else
    // is not a Derived