我遇到了这段代码,并想知道这意味着什么。 但即使在看了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,而是用通用语言解释。
到目前为止我的笔记:
T
和Vector4<T>
),这是一个函数指针吗?答案 0 :(得分:10)
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;
}