C ++如何知道vector <Base *>中的哪个元素是派生的*?

问题描述

C ++ /编译器如何在下面的代码中知道何时执行正确的代码?以及如何存储(在幕后)?我的向量包含Base*,但是某处必须有一些额外的信息,对吧?

compiling code与此相同:

class Base {
    public:
        Base()=default;   
        virtual void DerivedOrBase() { std::cout << "Base\n"; }
};

class Derived : public Base {
    public:
        Derived()=default;   
        void DerivedOrBase() override { std::cout << "Derived\n"; }
};

int main()
{
    std::vector<Base*> myVector;
    myVector.push_back(new Base());
    myVector.push_back(new Base());
    myVector.push_back(new Base());
    myVector.push_back(new Derived());
    
    for(auto p : myVector) p->DerivedOrBase();

    return 0;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)