0

名前空間の一部ではないクラスがあります

クラス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

しかし、競合するクラス名があるため、エラーが発生します。これを回避する方法はありますか?

4

2 に答える 2

1

このusing namespaceキーワードは、指定された名前空間からグローバル名前空間にすべての名前をインポートします。グローバル名前空間で既に a を宣言しているためclass A、競合が発生します。

解決策: を使用しないでくださいusing namespace B

これは効果的にあなたがしていることです:

namespace GLOBAL {
    class A { ... };
};

namespace B {
    class A { ... };
};

using namespace B /* export 'B::A' into 'GLOBAL' resulting in a conflict; */ ;
于 2013-11-15T07:18:21.633 に答える