有沒有辦法強制類/枚舉只能在同一個文件中訪問,類似於靜態函數/變量的行爲方式?如何聲明「靜態」類/枚舉?
// free-floating static function
// basically I want similar access restrictions on helper-type classes/enums
static void func(void)
{
}
// this is a compiler error
static class A
{
};
有沒有辦法強制類/枚舉只能在同一個文件中訪問,類似於靜態函數/變量的行爲方式?如何聲明「靜態」類/枚舉?
// free-floating static function
// basically I want similar access restrictions on helper-type classes/enums
static void func(void)
{
}
// this is a compiler error
static class A
{
};
的具名命名空間內聲明的類是你想要什麼:
namespace
{
class SomeClass { };
}
這將被命名爲在編譯器,它是翻譯單元的不可訪問之外這樣一種方式錯位。
內的Unnamed namespace只是申報。
注意的static
使用率的變量的範圍限制爲同樣的翻譯單元由以下事實的限制,它只能適用於變量聲明和功能,但不將用戶定義類型。
未命名的名稱空間消除了這個缺點,並允許您在相同的翻譯單元範圍內定義用戶定義的類型。
從聯MSDN:
未命名空間是變量的靜態聲明優越的替代品。它們允許變量和函數在整個翻譯單元中可見,但在外部不可見。 儘管未命名名稱空間中的實體可能具有外部鏈接,但它們通過其翻譯單元唯一的名稱進行有效限定,因此永遠無法從其他任何翻譯單元看到。
而且他們的工作和靜態功能的替代一樣。 – Potatoswatter
匿名命名空間? – goji