是否可以从基本 class 类型的子 class 调用方法?

Is It possible to call methods from a subclass from a base class type?

大家好,感谢阅读, 我刚开始使用 classes,我 运行 遇到了制作对象数组的问题, 我有一个基class,和一个相同类型的数组,我想知道是否有可能 制作基本 class 类型的 subclasses 并将它们放入数组中并调用不是的方法 在基础 class 中,如果这是一个糟糕的问题,我深表歉意,如果我的措辞不当,我深表歉意,

#include <iostream>

int main()
{
    BaseClass* ObjectList[10];
    ObjectList[0] = new SubClass;
    ObjectList[0]->Load(10);
    ObjectList[0]->OtherFunction();     // How Can I Do This?
    return 0;
}


class BaseClass
{
public:
    virtual void Load(int Num) = 0;
};


class SubClass : public BaseClass
{
    void Load(int Num) override
    {
        std::cout << Num << std::flush;
    }
    void OtherFunction()
    {
        // Do Something
    }
};

谢谢

编辑 - 我的意图是有一个简单的基础 class 和许多不同方法的子 classes,并有一个基础数组 class,

您必须将指针向下转换为真正的 class(或至少 class 具有该方法)。如果您不需要任何控制,您可以使用 static_cast,如果您想要对演员进行 运行 时间验证,则可以使用 dynamic_cast

...
SubClass *psc = dynamic_cast<SubClass *>(ObjectList[0]);
if (psc != nullptr) {   // an invalid cast would set it to NULL
    psc->OtherFunction();
}
else {
    // process the error
}

您始终可以拥有多个指向同一对象的指针(或引用)。

int main()
{
    BaseClass* ObjectList[10];
    SubClass TheSubclass;
    ObjectList[0] = &TheSubclass;
    ObjectList[0]->Load(10); // presumably in a loop
    TheSubclass.OtherFunction();
    return 0;
}