C++ 使用对基类具有唯一性的派生类方法

C++ 使用对基类具有唯一性的派生类方法,c++,subclass,unique-ptr,C++,Subclass,Unique Ptr,我有一个基类和一个多个派生类(有它们自己的.h和.cpp文件),看起来像这样 class Base { // Base stuff } class Derived : public Base { public: derivedOnlyFunc(); } class SecondDerived : public Base { public: derivedOnlyFunc2(); } 在我的主文件中,我有一个唯一指针向量,指向派生对象的基点。但是,我想调用de

我有一个基类和一个多个派生类(有它们自己的.h和.cpp文件),看起来像这样

class Base {
    // Base stuff
}

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

class SecondDerived : public Base {
   public:
   derivedOnlyFunc2();
}
在我的主文件中,我有一个唯一指针向量,指向派生对象的基点。但是,我想调用derivedOnlyFunc()

vector baseVector={new-Derived(),new-Derived()}
用于(自动对象:baseVector)
//要在此处使用object.derivedOnlyFunc()

我不能将baseVector更改为unique_ptr派生的向量,因为它将包含多个派生类。如何使用派生类的函数?

这种模式通常需要动态强制转换

if (auto der = dynamic_cast<Derived *>(object.get()))
    der->derivedOnlyFunc();
else
    // is not a Derived
if(auto der=dynamic\u cast(object.get()))
der->derivedOnlyFunc();
其他的
//不是派生的

dynamic\u cast
是你的朋友。它帮助您将
Base*
转换为
Derived*
Base&
转换为
Dervied&
if (auto der = dynamic_cast<Derived *>(object.get()))
    der->derivedOnlyFunc();
else
    // is not a Derived