Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在哪里放置用户定义类型的容器?_C++ - Fatal编程技术网

C++ 在哪里放置用户定义类型的容器?

C++ 在哪里放置用户定义类型的容器?,c++,C++,假设有一些用户定义的类型,以及这些类型的容器,这些类型的容器经常被操纵,因为屏幕上一次通常有这些类型的多个实例 目前,我有一个带有关联源文件的头文件和一个用于保存这些容器的命名空间,但我是否应该创建一个单独的类来保存它们?我是否应该将容器与它们所包含的类放在同一个头文件中(但显然在类之外)?对于这种情况,标准做法是什么?我曾经在特定类将容器作为该类接口的一部分时键入def。然后,任何需要使用该类的人都很容易发现“FooVec”是一个没有很多fu的Foo的std::vector 然而,这是一个不完

假设有一些用户定义的类型,以及这些类型的容器,这些类型的容器经常被操纵,因为屏幕上一次通常有这些类型的多个实例


目前,我有一个带有关联源文件的头文件和一个用于保存这些容器的命名空间,但我是否应该创建一个单独的类来保存它们?我是否应该将容器与它们所包含的类放在同一个头文件中(但显然在类之外)?对于这种情况,标准做法是什么?

我曾经在特定类将容器作为该类接口的一部分时键入def。然后,任何需要使用该类的人都很容易发现“FooVec”是一个没有很多fu的Foo的std::vector

然而,这是一个不完美的解决方案,考虑下面的代码:

namespace bar
{

  typedef std::vector<Foo> FooVec;

  class CClass
  {
      CClass(FooVec&)
      {
          ...
      }
  };
}
名称空间栏
{
typedef std::vector FooVec;
类C类
{
C类(FooVec&)
{
...
}
};
}
当你的同事为他们的班级重新定义FooVec时,问题自然会出现:

namespace bar
{

typedef std::vector<const Foo> FooVec;

class CAnotherClass
{
    CAnotherClass(FooVec&)
    {
        ...
    }
}

};
名称空间栏
{
typedef std::vector FooVec;
划船班
{
CAnotherClass(FooVec&)
{
...
}
}
};
我发现要解决这个问题,最简单的方法是将它们大致放在每个名称空间/库/关联类组的一个公共include中。因此,当其他人将typedef添加到bar名称空间中的某个内容时,您可以将它们全部放在一个位置。即:

 barTypes.h

 namespace bar
 {
         typedef std::vector<Foo> FooVec;
         typedef std::vector<const Foo> FooConstVec;

 }
barTypes.h
名称空间栏
{
typedef std::vector FooVec;
typedef std::vector foocontvec;
}
通过将它保持在每个小类集(即每个名称空间)的一个头,您不会得到一个充满typedef的巨大文件。它仍然可以让用户很好地了解作为类接口一部分的类型。一旦建立了这个标题,就只需要维护团队使用它的纪律,而不是建立额外的typedef


如果您对构建性能有疑问,也可以将此标题作为分析的一部分。

您所说的第二部分基本上就是我所做的。谢谢你的信息。还有一个不相关的问题,全局常量vs类变量(不变量)?我假设类变量是首选的,但我的假设正确吗?我(认为)最好将值限制在所需的最低范围内。也就是说,如果它只用于一个函数,则只用于该函数。如果它在整个类中使用,只需为该类定义它。等