C++中的命名空间成员(使用与不使用)
Namespace Members in C++ (using vs not using)
所以这只是一个奇怪的想法。我暂时拥有以下.h和.cpp文件:
.h:
#ifndef A_H_
#define A_H_
namespace A {
void FunctionOne();
}
using namespace A;
void FunctionTwo();
#endif
.cpp:
#include <iostream>
#include "A.h"
using namespace std;
void A::FunctionOne() {
cout << "Function one!";
}
void A::FunctionTwo() {
cout << "Function two!";
}
现在,这不起作用。我得到一个编译时错误,因为"FunctionTwo"不是"a"的成员。但这让我有点困惑。我本以为这只是语法问题。
如果以这种方式声明时FunctionTwo不是a的成员,那么它是什么?
using namespace A;
与namespace A { ... }
的含义不同。
它允许从命名空间A
中自动查找符号,但这并不意味着它后面的每个声明都会自动声明到该命名空间中。事实上,它对声明几乎没有任何作用。
因此,您的FunctionTwo
仍在全局命名空间中,而不是A
命名空间的一部分。
它将是全局命名空间的成员,即::
引用的命名空间,在本例中为:::FunctionTwo()
。
相关文章:
- 命名空间 std 没有成员any_of
- 为什么 Clang 在命名空间'std'中没有名为 'copy' 的成员给出错误
- 初始化命名空间中的变量是否类似于将它们初始化为类成员?
- 在 c++ 中使用类的命名空间定义类的成员
- Catalina C++:使用<cmath>标头产生错误:全局命名空间中没有名为 'signbit' 的成员
- 命名空间 Win 没有成员"simpleControl"是什么意思
- Visual Studio 2017:命名空间"System"没有成员"Windows"
- 如何从嵌套在命名空间中的类调用成员函数?
- 成员的结构与命名空间的潜在范围
- 类成员函数在其命名空间之外定义
- Typedef 不是命名空间的成员
- 无法解析命名空间成员"线程"
- C++中的命名空间成员(使用与不使用)
- 使用不同文件中的命名空间成员
- 非限定名称查找查找内联命名空间成员
- 用户声明的命名空间成员
- ISO c++草案(n3290)中的一点:3.4.3.2/1命名空间成员
- 试图通过using-declaration定义命名空间成员
- Linux CLion 无法解析命名空间成员
- C++命名空间成员在不同文件中的访问如何?"namespace std"如何实施?