所以这只是一个奇怪的想法。我暂时拥有以下.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的成员,那么它是什么?
答案 0 :(得分:4)
using namespace A;
与namespace A { ... }
并不等同。
它允许自动查找来自命名空间A
的符号,但这并不意味着它后面的每个声明都会自动声明到该命名空间中。事实上,它对声明几乎没有任何作用。
因此,您的FunctionTwo
仍在全局命名空间中,而不是A
命名空间的一部分。
答案 1 :(得分:0)
它将是全局命名空间的成员,即::
引用的命名空间,在本例中为::FunctionTwo()
。