C++ 使用对基类具有唯一性的派生类方法
我有一个基类和一个多个派生类(有它们自己的.h和.cpp文件),看起来像这样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
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