我正在写一个图书馆。有两个具有相同名称的类但每个类都在不同的名称空间中是不是一个坏主意?
使用名称空间:
//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
...
答案 0 :(得分:5)
总的来说,那没关系。这正是命名空间的用途。在这个例子中,目前还不清楚设计目标是什么,因此不清楚这是否适合使用命名空间。
答案 1 :(得分:-1)
是的,这是一个坏主意。
sparse_matrix
讲述了该对象的行为。 如果您希望它们具有公共基础,请执行继承(抽象与否)。