我在处理头文件和 namespace 时遇到问题。如果我们在命名空间中定义函数,那么我们可以使用该命名空间的名称作为标识符。
这没问题,但真正令人困惑的是,C++ 中的大多数函数(在不同的 头文件中声明)都在std 命名空间中。
现在是头文件里面的命名空间还是头文件里面的命名空间?
如果命名空间位于每个头文件中,那么如何使一个函数(在头文件中声明并完全实现)成为该预定义命名空间的成员?
一个具体的例子:
当我尝试使用 string
时在 C++ 中然后我使用 #include <string>
但后来我必须使用标识符来调用函数(如 std ::stoi
)。
现在,当我打开头文件时 string
我看到了stoi
在头文件中完全实现 string
.那么这个函数如何成为std
的成员呢?命名空间因为在 string
我没有看到头文件 std
任何地方也不是 std
的成员显式命名空间。
我的问题可能非常基础,但我在任何地方都找不到答案。简单地在命名空间中声明一个函数然后使用它很简单,但是一个在头文件中声明和实现的函数,该函数如何成为任何命名空间的成员以及一个命名空间如何具有来自不同头文件的函数?
如果有人告诉我怎么做就够了stoi
成为 std
的成员.剩下的我可以自己做。
最佳答案
可以添加命名空间。例如,在一个文件中你可能有:
namespace myspace {
int f();
}
还有一个:
namespace myspace {
void g();
}
现在 f
和 g
都是命名空间 myspace
中的函数。如果您愿意,您还可以在上面的代码中提供函数的定义。或者在一个实现文件中你可以这样做:
namespace myspace {
int f() {
return 42;
}
}
关于c++ - C++ 中的头文件和命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55928912/