相关疑难解决方法(0)

C++ 动态向下转换为类模板,模板模板参数是类模板或别名模板

我希望标题有意义。我可能缺少正确表达它的词汇。

嗯,举个例子可能会更清楚。

我的问题是:在以下某些情况下(写在注释中),动态向下转换在运行时返回 0。我想知道这是否是正确的行为(使用 C++11),以及为什么,以及我能做些什么来使其工作。显然,Templated 和 A::A_templated 被视为不同的类,尽管通过使用别名“using”定义为相同的类。对于简单的 typedef 别名,不会出现问题。

template <class T>
class Templated {};

class A {
    public :
    typedef int A_Type;
    template <class T>
    using A_Templated = Templated<T>;
};

class Test_base {
    public :
    Test_base() {}
    virtual void foo()=0;
};

template <class T>
class Test_Type : public Test_base {
    public :
    Test_Type() {}
    void foo() {}
};

template < template <class T> class TT >
class Test_Templated : public Test_base {
    public :
    Test_Templated() {}
    void foo() …
Run Code Online (Sandbox Code Playgroud)

c++ templates dynamic-cast c++11 template-aliases

3
推荐指数
1
解决办法
1171
查看次数

标签 统计

c++ ×1

c++11 ×1

dynamic-cast ×1

template-aliases ×1

templates ×1