我有一个基类和多个派生类(带有自己的.h和.cpp文件),看起来像这样
class Base {
// Base stuff
}
class Derived : public Base {
public:
derivedOnlyFunc();
}
class SecondDerived : public Base {
public:
derivedOnlyFunc2();
}
在我的主文件中,我有一个唯一的指针向量,该向量指向指向派生对象的基础。但是,我想调用namedOnlyFunc()。
vector <unique_ptr<Base>> baseVector = {new Derived(), new Derived()}
for (auto object : baseVector)
// Want to use object.derivedOnlyFunc() here
我不能将baseVector更改为Unique_ptr派生的向量,因为它将包含多个派生类。如何使用派生类的功能?
正如用户Werner Henze所说,铸造是解决您的问题的方法。静态铸造应该是最好的解决方案。示例代码:
static_cast<Derived&>(object).derivedOnlyFunc(); // object is an instance of Base
替代方法是旧式C转换:
((Derived&)object).derivedOnlyFunc(); // object is an instance of Base