0
我正在寫有內容的庫:C++:是否當前命名空間覆蓋其他命名空間
namespace david {
typedef enum {
BAR
} CommonEnum;
class Foo {
void fooBar() {
std::cout << BAR << std::endl;
}
}
}
,並假設用戶寫文件
typedef enum {
BAR = 1
} CommonEnum;
#include <david.h>
Foo myFoo();
myFoo.fooBar();
什麼將被打印出來?如果0
將被打印,是可靠?我知道我可以在david::Foo
前加上BAR
的前綴,使其成爲david::BAR
,這就可以肯定地回答這個問題(這是我現在正在做的),但它變得非常冗長,我試圖堅持80這意味着我的代碼越來越難以閱讀。
*「會打印什麼?」* - 回答問題:嘗試此操作時打印了什麼?這是唯一的問題,還是你在尋找標準中的引用來消除你所懷疑的所有疑問,即你所見證的是明確的? – WhozCraig 2014-09-27 02:55:15
它首先會抱怨'Foo'定義中缺少分號,然後它會告訴你''Foo'沒有在這個範圍內聲明「,然後,當你解決這個問題時,」請求成員'fooBar'在' myFoo',它是非類類型的'david :: Foo()'「,最後它會抱怨'fooBar'是私有的。 – 2014-09-27 04:07:17