我现在正致力于一个需要整合两个子项目的项目。
项目A用C ++编写,项目B用C编写。一个问题是项目B中有一个名为vector
的结构,由其作者和项目A创建,{{1使用std::vector
中的{}。因为项目B可能会在以后更新,所以我不想更改B的矢量类的名称。
有没有办法处理这种情况?
答案 0 :(得分:1)
这就是你在C ++中拥有namespaces的原因!建议将自己的vector
类包装在自己的命名空间中。
答案 1 :(得分:1)
他们已经分别有不同的名字vector
和std::vector
。你不必改变任何东西。
答案 2 :(得分:0)
如果你要合并这样的2个项目,你当然会用C ++编程......
您可以将C矢量包装在命名空间中......每当您需要使用C矢量时,您将其类型称为C_NAMESPACE :: vector。 (不要导入两个命名空间!)
试一下,看看它是否有效。 =)
答案 3 :(得分:0)
我认为,有两个非常简单的解决方案。
using namespace std;
并将标准库的向量称为std::vector
,将C向量称为vector
或::vector
。std
的内容污染项目的命名空间)请将标准库的向量称为vector
或std::vector
,将C向量称为{{1 }}。如果您还不知道,在任何名称空间之外声明的任何标识符::vector
都可以称为x
,始终与任何标识符{{不同1}}在命名空间内声明。
我的偏好是为了避免在任何地方写::x
,以避免混淆。我总是将标准库的向量称为x
,将C向量称为vector
。如果你这样做,即使你是std::vector
也没关系。