我有两个基本抽象类 A 和 B 从 A 继承的东西。 B 包含具有通用类型的map参数,我想从 A 和 B 创建子代并将其存储在双端队列中:>
class A {
};
template <typename T>
class B : public A {
std::map<const char *, T> data;
virtual void doEvent(const char *) = 0;
};
class C : public A {
};
class D : public B<char> {
void doEvent(const char *event) {
// use map<const char*, char>
}
};
class E : public B<int> {
void doEvent(const char *event) {
// use map<const char*, int>
}
};
std::deque<A *> as;
void main() {
for (auto &it : as) {
//if (it instanceof B) {
// cast it to B
// call B.doEvent("myEvent")
//}
}
}
有人可以帮我如何检查孩子是否从 B 继承而忽略了T类型。如何使用具有通用类型的std :: is_base_of或dynamic_cast。
谢谢