typedef类型不清楚

Unclear typedef type

本文关键字:不清楚 类型 typedef      更新时间:2023-10-16

我看到这段代码,想知道它的意思。但即使在看了大约15分钟之后,它对我来说也没有意义

template< typename T >
struct Vector4 {
    typedef T Vector4<T>::* const vec[4];
    static const vec constVec;
    //just to have some member instances of T
    T member1, member2, member3, member4;
};

那么constVec的类型是什么呢?请不要只是重复typedef,而是用通用语言解释。

到目前为止我的笔记:

  • 为什么有两种类型(TVector4<T>),这是函数指针吗
  • :*是什么意思?从Vector4的范围中提取所有内容
  • 它是常量指针数组吗?但是为什么::那么

constVec是指向Vector4<T>类成员的4个常量指针的数组,这些指针的类型为T

注意:成员不是常量,指针本身是常量。

首先,由于这些是常量指针,您需要在构造函数中初始化它们:(我刚刚注意到static限定符,所以它必须在类外初始化,但如果它不是静态的,则需要在初始化列表中进行初始化。)

template< typename T >
struct Vector4 {
    typedef T Vector4<T>::* const vec[4];
    static const vec constVec;
    //just to have some member instances of T
    T member1, member2, member3, member4;
};
template<typename T>
const typename Vector4<T>::vec Vector4<T>::constVec = {&Vector4::member1,&Vector4::member2,&Vector4::member3,&Vector4::member4};
int main() {
    Vector4<int> v;
    for(int i=0; i<4; i++) {
        (v.*Vector4<int>::constVec[i]) = 5;
    }
return 0;
}