Nob*_*ody 6 c++ templates typedef
我遇到了这段代码,并想知道这意味着什么.但即使在看了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;
};
Run Code Online (Sandbox Code Playgroud)
那么constVec的类型是什么?请不要只重复typedef,而是用通用语言解释.
到目前为止我的笔记:
T和Vector4<T>),这是一个函数指针吗?eno*_*ram 10
constVec是一个由4个常量指针组成的数组,这些指针是Vector4<T>类的成员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;
}
Run Code Online (Sandbox Code Playgroud)