不同名称空间中具有相同名称的类

时间:2016-10-25 22:23:44

标签: c++ namespaces naming

我正在写一个图书馆。有两个具有相同名称的类但每个类都在不同的名称空间中是不是一个坏主意?

使用名称空间:

//forward declaration
namespace sparse {
    class matrix;
}
namespace dense {
    class matrix;
}

namespace dense {
    typedef Index uint64_t;
    class matrix {
        public:
        sparse::matrix tosparse();
    };
}

namespace sparse {
    typedef Index uint32_t;
    class matrix {
        dense::matrix todense();
    };
}

或者,我可以使用长名称:

class sparse_matrix
...

2 个答案:

答案 0 :(得分:5)

总的来说,那没关系。这正是命名空间的用途。在这个例子中,目前还不清楚设计目标是什么,因此不清楚这是否适合使用命名空间。

答案 1 :(得分:-1)

是的,这是一个坏主意。

  1. 可以包含多个命名空间。所以这相当于写sparse :: matrix vs dense :: matrix。
  2. 清晰度是王道。 sparse_matrix讲述了该对象的行为。
  3. 他们为客户提供类似/相同的实用程序。为什么不同的命名空间?
  4. 如果您希望它们具有公共基础,请执行继承(抽象与否)。