小编Mar*_*rri的帖子

向多个继承的类的超类强制转换void *不会调用正确的方法

我将指向一组异构对象的指针列表存储在容器中,并使用字符串来标识它们。关于此操作的安全性,我已经在这里进行了讨论,我对此表示满意。

问题在于,当该类具有多个继承并且我尝试将相同的指针强制转换为一个或另一个超级类时,似乎第二次强制转换失败。

这是一个例子:

#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)

c++ casting multiple-inheritance void-pointers

2
推荐指数
1
解决办法
84
查看次数