提问人:codingtuba 提问时间:10/16/2022 更新时间:10/16/2022 访问量:78
C++ 11 命名空间范围与函数 [duplicate]
C++11 namespace scoping with functions [duplicate]
问:
现在,我正在用 c++ 编写一个复杂的项目。我简化了这个示例,在命名空间中,我定义了两个函数,它们都需要彼此。
namespace Example {
void foo()
{
bar();
}
void bar()
{
foo();
}
}
有什么方法可以解决我的问题,而无需将函数与命名空间分开?
答:
2赞
user17732522
10/16/2022
#1
您可以在命名空间内进行正向声明,就像在全局命名空间范围内执行此操作一样:
namespace Example {
void bar();
void foo()
{
bar();
}
void bar()
{
foo();
}
}
但是,对于任何函数,如果这些是在多个翻译单元之间共享的头文件中定义的函数,则需要标记它们。如果它们是在一个翻译单元中仅以一种含义声明和定义的函数,那么它们可能应该被标记,以便其他具有相同名称的函数可以在其他翻译单元中声明,而不会发生名称冲突和随之而来的 ODR 违规和 UB。inline
.cpp
static
此外,您可以根据需要随时打开和关闭命名空间,并根据需要打开和关闭任意数量的文件和翻译单元。F.D.公司
namespace Example {
void foo();
void bar();
}
在头文件中和
#include<header.h>
namespace Example {
void foo()
{
bar();
}
void bar()
{
foo();
}
}
在相应的也没问题。.cpp
下一个:测验打印错误猜测数的错误值
评论