typepedef base_type data_type的含义是什么?
what is the meaning of typedef base_type data_type?
我经常看到cpp类在声明的开头这样写
typedef base_type data_type
据我所知,这与使您的类与向量兼容有关。有人能指点我吗?
在谷歌上搜索这句话也会给你数百个使用这句话的链接。
typedef typename Base<T>::Foo Foo
是模板编程的常用技术。
由于Base<T>
依赖于模板形参T
,编译器无法知道Base
是否对于任何特定类型T
是专门化的,因此Foo
不是类型(或根本不存在)。
所以你必须告诉编译器它应该假设Foo
是一个类型。
是的,这很麻烦。
但是模板是非常有用的,所以有点麻烦是值得的。:)
除了以上,typedef
只是引入了一个替代名称,与原始名称只有非常细微的区别。
例如,给定int x = 42;
,语句x.~int();
无效,但typedef int Int; x.~Int();
可以。
另一个微妙的区别是构造函数和析构函数的定义,必须使用原始的类名。
在c++ 11中,你可以像使用typedef
一样使用using
,例如using Int = int;
。
相关文章:
- "type* = nullptr"的含义是什么
- 警告的原因是什么:"when type is in parentheses, array cannot have dynamic size"?
- C++ - "Incomplete type not allowed"错误是什么意思,我该如何修复它?
- 这是什么意思:"member reference type 'Human *' is a pointer; did you mean to use '->'?"
- C++ 中数组的"expression must have pointer-to-object type"是什么?
- "conversion from void to non scalar type string"是什么意思?
- 在 LLVM 中,调用中函数的位播"type"是什么?如何访问此功能?
- C++中的"vector<type[n]>"是什么?
- "type-safety"在C++中的确切含义是什么?
- 在OpenCV中,std::vector而不是cv::Mat的"type"是什么解释,我该如何更改它?(C++)
- c++ 声明中的 ::type 是什么意思
- "Cannot overload functions distinguished by return type alone"是什么意思?
- cmake -D <var>:<type>=<value> 参数"-D"是什么意思
- C++:声明'TYPE& name(&TYPE);'是什么意思?
- 这个错误是什么意思" expression must have pointer-to-class type"?
- 错误是什么意思"expression must have class type"?
- 'must have an argument of class or enumerated type'到底是什么意思
- "Expected '(' for function-style cast or type construction"错误是什么意思?
- &Type::变量是什么意思?
- C ++与"pointer = new type []"相比,"pointer = new type"是什么?