我有一个不属于任何命名空间的类
A类(*)。
我有另一个同名但属于命名空间的类
命名空间 B 的类 A 的一部分。
在 xyz.cpp 中,我有以下内容:
#include "..."
using namespace B;
// some code
A::var; // This A should be part of (*) and not namespace B.
// some code
但由于我有冲突的类名,我得到了错误。有没有办法解决这个问题?
我有一个不属于任何命名空间的类
A类(*)。
我有另一个同名但属于命名空间的类
命名空间 B 的类 A 的一部分。
在 xyz.cpp 中,我有以下内容:
#include "..."
using namespace B;
// some code
A::var; // This A should be part of (*) and not namespace B.
// some code
但由于我有冲突的类名,我得到了错误。有没有办法解决这个问题?
The using namespace
keyword imports all of the names from the specified namespace into the global namespace. Since you already declared a class A
in the global namespace, this results in a conflict.
Solution: Don't use using namespace B
.
This is effectively what you're doing:
namespace GLOBAL {
class A { ... };
};
namespace B {
class A { ... };
};
using namespace B /* export 'B::A' into 'GLOBAL' resulting in a conflict; */ ;
你可能不会使用
using namespace B;
但使用喜欢
B::A::var
反而。