【发布时间】:2016-10-25 22:23:44
【问题描述】:
我正在编写一个库。有两个同名的类但每个类都在不同的命名空间中是不是一个坏主意?
使用名称空间:
//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
...
【问题讨论】:
-
你相信图书馆的用户不是
using namespace *;吗?如果答案是no,那么就不是很安全了。我只会使用长名称。反正也没那么长。 -
扩展@DeiDei 所说的内容,这实际上取决于使用情况。在我看来,很多时候它们可能会一起使用,而且
dense::matrix和sparse::matrix比dense_matrix和sparse_matrix长。 -
就我个人而言,我会给长命名空间起别名,并且在使用库时永远不会使用
using namespce *;。但我想这可能会发生...... -
@DeiDei 如果用户说
using namespace whatever;,他们只能为随之而来的任何混乱负责。
标签: c++ namespaces naming