为什么类不能继承其父级的成员类型? [重复]

问题描述 投票:0回答:1
template<typename T>
struct A
{
    using U = int;
};

struct B : A<int>
{
    void f(U) // ok
    {}
};

template<typename T>
struct C : A<int>
{
    void f(U) // ok
    {}
};

template<typename T>
struct D : A<T>
{
    void f(U) // fatal error: unknown type name 'U'
    {}
};

int main()
{
    B      b; // ok
    C<int> c; // ok
    D<int> d; // error
}

为什么类不能继承其父类的成员类型?

c++ oop templates inheritance standards
1个回答
1
投票

由于作为一个非依赖名称,不会在依赖基类U中查找A<T>,该依赖基类取决于模板参数T。另一方面,对于BC,它们的基类都是非依赖基类。

© www.soinside.com 2019 - 2024. All rights reserved.