【问题标题】:Using typedefs appropriately to avoid "typedef contamination"适当使用 typedef 以避免“typedef 污染”
【发布时间】:2014-12-31 09:35:31
【问题描述】:

我正在为一个更大的包含项目开发某些功能,而我正在处理的“功能”是一些放在一起的类,其中某些功能可能会在主项目中全局使用。

为了可读性,我在我身边 typedef 了一些常见的(和冗长的)类型,以便在我的班级中使用。由于这些类型中的大多数都比较常见并且可能与其他含义一起使用,因此我不希望我的 typedef 溢出到可能使用不同 typedef 的主项目中。

那么确保我的 typedef 被“干净”定义而不是“污染”(我不确定这个术语是否也用于 typedef)项目的一般 typedef 池的最佳方法是什么?

到目前为止,我只知道将每个类的 typedef 设为私有,并从本质上在我的类中重新定义 typedef。我觉得听起来不太好?

【问题讨论】:

  • 将它们放入namespace ?
  • 将您的 typedef(以及您的类型和函数)放入命名空间。

标签: c++ typedef


【解决方案1】:
  • 您可以在命名空间中限制相关的typedef
  • 您可以将仅在 1 个类中使用的 typedef 放入该类中。
  • 如果只在少数文件中使用 typedef,请在 .cpp 文件中添加 typedef。

【讨论】:

    【解决方案2】:

    我建议您使用命名空间。所以不要输入:

    typedef int my_project_my_int;
    

    你输入

    namespace my_project {
        typedef int my_int;
    }
    

    并将其称为my_project::my_int

    在同一命名空间中定义的类中,您可以将其称为my_int。如果您想推荐您的同事类型,您可以随时使用his_project::my_int

    如果您是偏执狂,请将其称为::my_project::my_int::his_project::my_int

    【讨论】:

      猜你喜欢
      • 2017-06-04
      • 2010-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多