使用派生的 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
我有一个 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