尝试一般地强制转换派生的模板化类时出现问题

时间:2019-04-24 13:11:15

标签: c++ templates inheritance casting derived-class

我试图在不知道其类型的情况下将模板派生类转换为父类。

这是我拥有的代码的简化:

/* Base Class */
class Base {};

/* Templated derived Class */
template<typename T>
class ATemplate : public Base {  
  public:
    T GetData();

  private:
    T _data;
};

/* Derived class */
template<typename T>
class Derived : public ATemplate<T> {
};

void main() {
    std::vector<Base*> vector;
    vector.push_back(new Derived<int>());

    for (auto var : vector) {
        if (dynamic_cast<ATemplate</* I don't know the type of this class*/>>) {
           /* Do stuff */
        }
    }
}

我有一个Base列表,我想将该列表的每个类动态广播到ATemplate。

我不想为我创建的每种类型都投一个演员。一位朋友(cc killian.G)告诉我,我也许可以使用std :: variant。 有人知道我在问什么是可能的吗?

0 个答案:

没有答案