【发布时间】:2025-12-21 05:25:06
【问题描述】:
我有一个类层次结构,我想在其中引入一个方法模板,它的行为就像它是虚拟的一样。例如一个简单的层次结构:
class A {
virtual ~A() {}
template<typename T>
void method(T &t) {}
};
class B : public A {
template<typename T>
void method(T &t) {}
};
然后我创建对象 B:
A *a = new B();
我知道我可以通过typeid(a) 获取存储在a 中的类型。当我知道类型时,如何动态调用正确的B::method?我可能有这样的情况:
if(typeid(*a)==typeid(B))
static_cast<B*>(a)->method(params);
但我想避免出现这样的情况。我正在考虑创建一个以typeid 为键的std::map,但我会设置什么值?
【问题讨论】:
标签: c++ templates polymorphism