使用typedef作为一种方便替换类名的方式是一种误用吗
Is using typedef as a way to facilitate alternate class names a misuse?
在我的C++库中,在许多模块中,我使用typedef
,如下所示:
class ClassName {
//...
}
typedef ClassName AlternateClassName;
我这样做只是为了让自己和潜在的其他人能够允许我的类被官方名称之外的名称调用——只不过是一个同义词。这可以使用typedef
吗?
这是一个有效的用例。这方面的另一种情况通常用于实例化模板。
typedef std::vector<int> DynamicInts;
如果您使用的是C++11,那么我建议使用using
关键字。
using DynamicInts = std::vector<int>;
typedef
在这里很好,但它的现代替代品using
更好。using
使用了更常见的从左到右的语法,它也可以被模板化
template <typename T>
using vec_size_type = typename std::vector<T>::size_type;
vec_size_type<int> sz;
typedef
的替代方案很笨拙:
template <typename T>
struct vec_size_type{
typedef typename std::vector<T>::size_type type;
};
vec_size_type<int>::type sz;
这是typedef的一个可以使用的用法吗?
IMHO,是的。
我与不止一个团队合作过,他们使用了"压缩"类名的想法。我没有听到任何抱怨。
class ClumsyButAccuratelyDescriptiveName_t {
//...
}
typedef ClumsyButAccuratelyDescriptiveName_t CAD_t;
相关文章:
- 我正在寻找一种优雅的方式来从元组向量创建tuple_element向量
- C++|以一种很好的方式将树(不一定是二进制的)打印到stdout
- 只需要知道我在c ++中打印模式的方式是否有效,或者有另一种方法可以有效地做到这一点
- 使用typedef作为一种方便替换类名的方式是一种误用吗
- 有没有一种递归的方式来制作这个字符串数组?
- C++:一种在列表中打印所有对的优雅方式
- Math.log是以一种避免log(1 x)的精度的方式实现的
- !=的另一种方式
- 以一种方式使用字符串选择(如果语句)
- 一种方式链接列表和不需要的第一个元素AFRTER填充
- 重载输入/输出运算符,为什么它以这种方式工作而不是以另一种方式工作
- 是 2s 补码存储负数的一种方式
- 是否可以以这样一种方式实现一个类,即可以将其值初始化为POD
- 部分类专门化只是编写完全专门化的另一种方式吗?
- 读取数组2维的另一种方式c++
- 从套接字接收消息的无限循环内ussleep的另一种方式
- c++ OOP哪一种方式给构造函数赋值更好
- 操作符只能以一种方式定义——c++
- 是他们编译一个项目的一种方式,这样你的所有函数类都可以.进入一个可以链接的文件
- 推入堆栈的另一种方式