类型不能是对象的成员?

cha*_*ang 1 c++ types class

我无法编译以下代码:

template<typename T>
class A {
public:
    T x;
    typedef T type;
};


int main()
{
    A<int> a;
    using T = a.type;
    T t;
    
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它报告了一个错误:

error: unknown type name 'a'
    using T = a.type;
Run Code Online (Sandbox Code Playgroud)

这是否意味着该对象a没有type其成员之一?并且类型不能是对象的成员,对吗?

Rem*_*eau 5

type不是对象实例的数据成员a。所以不,您无法在 的实例上type使用.或运算符进行访问。->A

type是类的嵌套类型A。您必须使用::运算符来访问它,例如:

using T = A<int>::type;

或者

using T = decltype(a)::type;