检查我的类是模板类忽略类型的实例

时间:2019-01-23 16:49:21

标签: c++ templates

我有两个基本抽象类 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。

谢谢

0 个答案:

没有答案