使用具有unique_ptr的派生类方法作为基类

问题描述 投票:0回答:1

我有一个基类和多个派生类(带有自己的.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派生的向量,因为它将包含多个派生类。如何使用派生类的功能?

c++ subclass unique-ptr
1个回答
-1
投票

正如用户Werner Henze所说,铸造是解决您的问题的方法。静态铸造应该是最好的解决方案。示例代码:

static_cast<Derived&>(object).derivedOnlyFunc(); // object is an instance of Base

替代方法是旧式C转换:

((Derived&)object).derivedOnlyFunc(); // object is an instance of Base
© www.soinside.com 2019 - 2024. All rights reserved.