我有這樣一個標題:命名空間相同的名稱,功能
double commonFunction(...)
{ /*...*/ }
namespace F2
{
double impactFactor(...)
{ /*...*/ }
double func(...)
{ /*...*/ }
double F2(...)
{ /*...*/ }
}
namespace FL
{
double impactFactor(...)
{ /*...*/ }
double func(...)
{ /*...*/ }
double FL(...)
{ /*...*/ }
}
而且我想從全局命名空間訪問F2和F1功能。我嘗試添加這頭結束(或之後包括,無所謂):
using F2::F2;
using FL::FL;
我敢肯定,這個工程時,函數名從命名空間中的名稱不同,但爲什麼會出現這種不工作,我該如何解決它?謝謝
PS:我不能把這些函數放在他們的命名空間之外,因爲這會導致一個重新定義的符號(F2和FL,作爲命名空間和函數)。
UPDATE:對於那些詛咒我的人,這就是我所做的。由於這是一個科學公式頭文件,並且很難找到一個好的短名稱空間名稱,所以命名空間爲F2和FL,函數本身爲f2和fL。
通過使用適當的名稱解決這個問題。 IME最好的命名空間名稱是名詞,最好的功能名稱是動詞。用英語,這仍然有衝突的餘地,但他們少得多。 – sbi 2010-07-13 08:24:21
*使用*將名稱帶入作用域,因此如果在當前作用域中有該名稱的任何內容,編譯器將會發出抱怨。 所以,這意味着如果您在當前上下文中定義名稱** F2 **的** int **,那麼將您的名稱空間名稱更改爲** F_INFINITE **將導致相同的錯誤。 – 2010-07-13 09:16:21
這與名稱空間和函數名稱是相同的名稱無關,只是它們的聲明恰好在相同的範圍內。 – 2010-07-13 09:18:12