2013-11-15 138 views
0

我有一個不屬於任何命名空間的類命名空間中的類名衝突

class A(*)。

而且我有相同的名字,但名字空間

類的命名空間B的部分的一部分,其他類

在xyz.cpp,我有以下:

#include "..." 

using namespace B; 
// some code 
A::var; // This A should be part of (*) and not namespace B. 
// some code 

但由於我有類名衝突,我得到錯誤。有沒有辦法解決這個問題?

回答

1

using namespace關鍵字將指定名稱空間中的所有名稱導入到全局名稱空間中。由於您已在全局名稱空間中聲明瞭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; */ ; 
+0

謝謝。我使用:: A :: var來訪問全局名稱空間。 – user682765

0

不得使用

using namespace B; 

但使用像

B::A::var 

代替。