在C ++中声明使用的位置是否有良好的做法? [关闭]

问题描述 投票:1回答:1

声明使用是否有良好的做法(对于类似用法的typedef)?

例如,如果我有一个带有std::array<std::array<T, W>, H>成员的类,我想通过这样的使用来简化阅读和写作

template<typename T, uint32_t H, uint32_t W>
using matrix = std::array<std::array<T, W>, H>;

我应该把它放在哪里?在类声明内部或外部甚至是单独的头文件?

谢谢

c++ c++11 types typedef using
1个回答
3
投票

你的type alias template与模板类的目的完全相同,即定义一个类型:

template<typename T, uint32_t H, uint32_t W>
using matrix = std::array<std::array<T, W>, H>;

int main() {
    matrix<double, 10,3> m; 
    return 0;
}

因此,良好的做法是完全像处理其他类型定义一样处理它:

  • 如果你打算在很多地方重用这个定义,那就把它放在一个标题中(对于你的例子来说似乎是这样,因为矩阵是相当普遍的);
  • 如果它是一个没有通用的实现细节,则将它嵌入一个类(可能在头文件中);
  • 如果在单个源文件中使用矩阵,请将其放在使用它的编译单元中。

对于非模板类型别名,它与旧的typedef原理相同,因此与上面完全相同,此外,

  • 将它放在一个函数体中,如果它的唯一目的是作为一个非常长的类型名称的本地快捷方式。
© www.soinside.com 2019 - 2024. All rights reserved.