C++ 不清楚的类型定义类型
我偶然发现了这个代码,想知道它是什么意思。 但即使在看了15分钟之后,我还是觉得没什么意义C++ 不清楚的类型定义类型,c++,templates,typedef,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,
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;
};
模板
结构向量4{
typedef T Vector4::*常量向量[4];
静态常数vec constVec;
//只是为了有一些T的成员实例
T成员1、成员2、成员3、成员4;
};
那么consvec的类型是什么呢?
请不要只是重复typedef,而是用公共语言进行解释
我目前的笔记:- 为什么有两种类型(
和T
),这是函数指针吗Vector4
- ::*是什么意思?从Vector4的范围内获取所有信息
- 它是常量指针数组吗?但是为什么会这样呢
constVec
是一个由4个常量指针组成的数组,指向Vector4
类的T
注意:成员不是常量,指针本身是常量
首先,由于这些是常量指针,您需要在构造函数中初始化它们:(我刚刚注意到static
限定符,因此它必须在类之外初始化,但是如果它不是静态的,您需要在初始化列表中进行初始化。)
模板
结构向量4{
typedef T Vector4::*常量向量[4];
静态常数vec constVec;
//只是为了有一些T的成员实例
T成员1、成员2、成员3、成员4;
};
模板
const typename Vector4::vec Vector4::constVec={&Vector4::member1,&Vector4::member2,&Vector4::member3,&Vector4::member4};
int main(){
矢量4V;
对于(int i=0;i@EddyPronk:很高兴知道这些人是从哪里得到的^^^虽然我的来源不是从那里(但似乎受到了很大的启发)我在我的问题中添加了一个类型为T的成员。你介意添加一些代码吗,这表明vec
与成员一起使用吗?因此,这个示例的寓意是,你可以遍历成员。+1非常好。感谢你的解释和示例。
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;
}