一个简单的 C++ 问题:是否可以根据指针的运行时类型调用一个或另一个函数?
例如我有一个类 A,类 B 是 A 的子类。
我想写一个函数 f 这样
f(A* a)
{//do something
}
f(B* b)
{//do something else
}
//call f()
A* a = new A();
A* b = new B();
f(a);//do something
f(b);//do something, but I'd like it to "do something else"
额外的精度:A 和 B 是在我的代码中定义和实例化的,所以我不能在 A 和 B 上使用带有虚函数的常规多态...
我知道你可以使用一些 RTTI,但有没有更优雅的解决方案?
最佳答案
您可以使用 dynamic_cast
实现:
f(A* a)
{
B* b = dynamic_cast<B*>(a);
if (b == nullptr)
//do something
else
//do something else
}
关于c++ - 无创多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12054920/