确定实例是子类还是基类

问题描述

我正在尝试在 C++ 中开发一种方法来确定指向具有虚方法的类的指针是否是使用某种形式的 RTTI 的特定类型的子类。

以下是一些示例类:

class Base {
public:
  virtual void foo() = 0;
};

class A : public Base {
public:
  void foo() override;
};

class B : public Base {
public:
  void foo() override;
};

class BB : public B {
public:

};

我的目标是确定根类(在此示例中为 Base)的实例的类型,并使用它将此实例“路由”到特定的“处理程序”函数。例如,我会有一个 std::type_index 和 std::function 对表。如果传入的类的运行时类型与表中的类型匹配,则调用与该实例相关联的函数

理想情况下,这可以使用任何级别的继承。例如,使用上面的类,假设我有以下(概念)表

Type | Function
---------------
A    | fooA()
B    | fooB()

如果我传入 BB 类的一个实例(作为 Base*),它应该“路由”到 fooB,因为 BB 是 B 的子类。

在我的研究中,我发现了以下内容How do I check if an object's type is a particular subclass in C++? 接受的答案是“你真的不应该”。但是,就我而言,我认为没有其他方法可以做到这一点。

我希望这是有道理的。如果有更好的方法来思考/实现我正在尝试做的事情,请告诉我。

谢谢

解决方法

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

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

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