如何解决确定实例是子类还是基类
我正在尝试在 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 举报,一经查实,本站将立刻删除。