用下面的代碼,我得到的錯誤:我應該如何糾正錯誤「引用'p'含糊不清」?
reference to 'p' is ambiguous
爲什麼會這樣呢?我怎樣才能擺脫這一點?我想獲得「79」作爲輸出。有人可以拋出一些光。謝謝你的時間!
int p=3;
namespace {int p=7;}
namespace {int q=9;}
main()
{
cout << p << q;
}
用下面的代碼,我得到的錯誤:我應該如何糾正錯誤「引用'p'含糊不清」?
reference to 'p' is ambiguous
爲什麼會這樣呢?我怎樣才能擺脫這一點?我想獲得「79」作爲輸出。有人可以拋出一些光。謝謝你的時間!
int p=3;
namespace {int p=7;}
namespace {int q=9;}
main()
{
cout << p << q;
}
刪除用戶可以在本
int p=3;
或本
namespace {int p=7;}
或者,你可以把一個命名空間中的第一個聲明:
namespace foo
{
int p=3;
}
或給匿名命名空間的名稱:
namespace bar {int p=7;}
然後
main(){
std::cout <<bar::p << q;
}
那麼別無他法?感謝您的答覆 ! – sree 2013-02-24 14:42:54
@sree:還有另一種方式,我認爲 – 2013-02-24 14:43:36
或命名空間的名稱。 – 2013-02-24 14:44:20
@juanchopanza提出一個很好的解決方案。這裏是另一個:使用合格的名稱來引用在全局命名空間中聲明的變量:
#include <iostream>
int p=3;
namespace {int p=7;}
namespace {int q=9;}
int main()
{
std::cout << ::p << q;
// ^^^
}
所以它不可能得到一個o/p 79?謝謝你的建議。 – sree 2013-02-24 14:46:13
@sree您不能使用完全限定的標識符引用匿名名稱空間的成員。所以不行。你不能得到「79」輸出。 – 2013-02-24 14:48:55
@sree:Nikos C.給了你答案。如果你想用一個限定的名字來引用變量,你需要給這個名字空間一個名字。 – 2013-02-24 14:50:28
我在此代碼中看不到任何名爲'i'的東西。無論如何,你有沒有考慮過......沒有兩個同名的變量? – jalf 2013-02-24 14:42:12
你試圖打印哪個'p'? – 0x499602D2 2013-02-24 14:43:43
我很抱歉,請刷新您的頁面。謝謝。 – sree 2013-02-24 14:44:02