我正在研究分成多個名稱空間的C++庫。由於我試圖避免頭文件中的「使用」指令,我不得不爲變量,返回值和參數做替代的「namespace :: class」。你可以想象這會變得混亂。所以,我嘗試將using語句放入命名空間decloration(見下文)中,這看起來有訣竅,它看起來並不在包含此文件的文件中可見。在標題中使用名稱空間可見性
namespace Project
{
namespace Utility { class A; }
namespace System
{
using Utility::A;
class B
{
A *a; // instead of Utility::A *a
};
}
}
我的問題是,可以這樣做嗎?
這也發生在例如爲''使用命名空間std'並在全局範圍內定義一個叫'cout'的東西。即它與OP的問題沒有直接關係。但值得注意的是(作爲一個普遍問題),所以我提高了。 – 2011-03-06 18:05:15
不同之處在於,已知cout是在名稱空間std中定義的。 A是不知名的,在命名空間Project :: System中定義。客戶意外得到了Project :: System :: A(除非另有證明)。 – 2011-03-07 13:18:48