typedef类型不清楚
Unclear typedef type
我看到这段代码,想知道它的意思。但即使在看了大约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>
),这是函数指针吗 - :*是什么意思?从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;
}
相关文章:
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 类中的字符串不命名类型
- 不完整类型错误(E0409、E0070、E0515)
- CRTP 单一实例不完整类型或非文本类型
- 使用具有结构不完整类型错误的模板
- 哪些存储了不完整类型的 STL 数据结构可以用作类成员?
- 关于隐式声明的复制构造函数的引用在逻辑上不清楚
- C++复制 c'tor 现在确实会采取行动。 不清楚为什么
- Xalloc 不命名类型
- (结构名/类名)不命名类型C++
- 是否允许类类型的 std::function 成员变量(不完整类型)?
- MSVC 在不知道类型的情况下评估上下文(和错误)
- 为什么我得到变量"Node"不是类型名称错误
- Visual Studio Code "variable " u8 的 C/C++ 扩展名 " " 不是类型名称"
- 将"std::string {aka std::basic_string}"赋值中的不兼容类型<char>
- 实例化具有不完整类型的类模板格式不正确(如果该类型是在之后定义的)
- C++ 外部类不命名类型
- C++ 类型类的变量声明不命名类型?
- 如何在不违反类型别名规则的情况下解释消息负载?
- typedef类型不清楚