很抱歉,如果这是一个愚蠢的问题,但我正在学习C ++(我通常用C语言编写代码)而且我不了解如何使用命名空间和类。它们是否必须在头文件中声明?如何在命名空间中声明函数?让我们说我正在开发一个包含不同文件的大型项目。我在文件中定义了一个名称空间,但后来想要向同一名称空间添加更多的函数,但这些函数在另一个文件中定义。可以这样做吗?例如:
file1.cpp
namespace Example {
int vartest;
void foo();
}
file2.cpp
int othervar;
void otherfoo(); // How can I add this and othervar to the Example namespace?
谢谢!
答案 0 :(得分:4)
只需将其声明为同一“name”的等同 1 namespace
!
<强> file1.cpp 强>
namespace Example {
int vartest;
void foo();
}
<强> file2.cpp 强>
namespace Example {
int othervar;
void otherfoo();
}
命名空间已合并。
是否必须在头文件中声明它们?
没有。您可以在namespace
内声明任何namespace
。 (请注意,“全局范围”也是namespace
)
如何在命名空间中声明函数?
只需在namespace
内声明即可。正如你所做的那样。
让我们说我正在开发一个包含不同文件的大型项目。 我在文件中定义了一个名称空间,但后来想要添加更多名称空间 函数到同一个命名空间,但这些函数是在 另一个文件。可以这样做吗?
合并同一名称空间内同名的命名空间。
namespace X { void foo(){} }
namespace X { void foo(){} } //Error, redefinition of `foo` because the namespace ::X is merged
namespace X { void foo(){} }
namespace Y { void foo(){} } //Ok. Different name spaces...
namespace X { void foo(){} } // ::X
namespace Y { void foo(){} } // ::Y
namespace Y {
namespace X { // namespace ::Y::X here isn't same as ::X
void foo(){} //OK
}
}
1 回想起所谓的“全球范围”实际上是一个名为global namespace
的名称空间