C++中的命名空间成员(使用VS不使用)

C++中的命名空间成员(使用VS不使用),c++,namespaces,C++,Namespaces,所以这只是一个奇怪的想法。我暂时拥有以下.h和.cpp文件: .h: .cpp: 现在,这不起作用了。我得到一个编译时错误,因为FunctionTwo不是a的成员。但这让我有点困惑。我本以为这只是语法问题 如果以这种方式声明时FunctionTwo不是a的成员,那么它是什么?使用名称空间a;并不意味着与命名空间A{…}相同 它允许自动查找命名空间A中的符号,但并不意味着它后面的每个声明都会自动声明到该命名空间中。事实上,它对声明几乎没有任何作用 所以,FunctionTwo仍然在全局名称空间中,

所以这只是一个奇怪的想法。我暂时拥有以下.h和.cpp文件:

.h:

.cpp:

现在,这不起作用了。我得到一个编译时错误,因为FunctionTwo不是a的成员。但这让我有点困惑。我本以为这只是语法问题

如果以这种方式声明时FunctionTwo不是a的成员,那么它是什么?

使用名称空间a;并不意味着与命名空间A{…}相同

它允许自动查找命名空间A中的符号,但并不意味着它后面的每个声明都会自动声明到该命名空间中。事实上,它对声明几乎没有任何作用


所以,FunctionTwo仍然在全局名称空间中,而不是名称空间的一部分。

它将是全局名称空间的一个成员,即:引用的名称空间,在本例中:::FunctionTwo。

您应该发布完整的示例。对不起,在此上下文中,B是什么。这不是您真正的代码。你大概是指void A::FunctionTwo{这不是一个答案,只是一个请求:请不要在头文件中使用名称空间。关于using vs not using参数,无论使用多少名称空间,对任何函数始终使用不同的名称都可能是一个好主意,因为这对于模板来说是一个非常糟糕的陷阱。注意这个名称也很重要空间是编译时实体,在编译过程中是活的和死的,它们很好地保持了有序,我认为它们是C++的好方面,在更实用的层次上,它们也帮助IDE中的特性,比如自动完成,所以为什么不呢?@ USER 24857?为什么不呢?
#ifndef A_H_
#define A_H_

namespace A {
    void FunctionOne();
}

using namespace A;

void FunctionTwo();

#endif
#include <iostream>
#include "A.h"

using namespace std;

void A::FunctionOne() {
    cout << "Function one!";
}

void A::FunctionTwo() {
    cout << "Function two!";
}