![]() |
1
3
我不认为在不同的名称空间中重用相同的标识符有什么问题,毕竟它们是为其创建的。 不过,我强烈建议您不要“模拟”包含math::rectangle。如果您需要该文件,那么就将其包含在内,但您所做的操作称为复制/粘贴编程,这会导致大量问题,本质上是因为您的两段代码没有同步,因此一段代码中添加的任何错误修复/功能都不会在另一段代码中报告。 编辑:对编辑的回答;) 从评论中看不清楚,因此我将说明: 如果您需要依赖项(因为您确实使用了所提供的功能),那么您必须包含头部。另一方面,如果您只使用继承来获得具有4个角和几乎没有方法的东西,那么您最好使用最小功能来滚动一个新的矩形类。 不过,我能想到一个边缘案例。我的印象是,您对功能不太感兴趣,但事实上,您对重用数学库中的方法的可能性很感兴趣,这些方法是为将Math::Rectangle作为参数而定制的。 根据草本萨特(我认为C++编码标准),与类捆绑的自由函数是类公共接口的一部分。所以如果你想要这些类,你实际上需要继承。 现在我可以理解,你可能不愿意包括一个可能很大的图书馆(我不知道你的数学图书馆)。在这种情况下,可以考虑将数学库分成两部分:
这样你就只能依靠数学图形库了。 另一方面,如果您绝对不希望依赖项,那么可以直接复制/粘贴,但是通过测试头部保护的存在来测试Math::Rectangle的存在的解决方案不合适:
请注意,如果在math::rectangle之前包含graphics::rectangle,则可能存在一些编译问题… 所以决定你是否需要依赖。 |
![]() |
2
2
这恰恰是名称空间的用途,矩形既是一个数学对象,又是一个图形对象。 但是,避免包含头文件的尝试是非常不明智的。它只会让人头疼。数学变化::矩形 应该 导致对graphics::rectangle的重新生成-如果它们最终出现不匹配,并且您将其隐藏在编译器中,那么最终将出现更难调试的运行时错误。 |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |