我将指向一组异构对象的指针列表存储在容器中,并使用字符串来标识它们。关于此操作的安全性,我已经在这里进行了讨论,我对此表示满意。
问题在于,当该类具有多个继承并且我尝试将相同的指针强制转换为一个或另一个超级类时,似乎第二次强制转换失败。
这是一个例子:
#include <iostream>
#include <map>
using namespace std;
class A {
public:
virtual void hello() = 0;
};
class B {
public:
virtual void goodbye() = 0;
};
class C : public A,
public B
{
public:
void hello() override {
std::cout << "C says: Hello World!" << std::endl;
}
void goodbye() override {
std::cout << "C says: GoodBye World!" << std::endl;
}
};
class D : public A {
public:
void hello() override {
std::cout …Run Code Online (Sandbox Code Playgroud)