我有一個C++類聲明瞭一個單一的靜態成員。整個類都包含在一個頭文件中,我寧願避免創建一個.cpp文件來簡單地包含靜態成員定義。我一直試圖使用靜態關鍵字(在C的意義上)和匿名命名空間,這兩個應該給頭文件靜態鏈接(asfaik)聲明的變量,但都沒有辦法工作,任何人都可以給我一個解決方案問題?聲明的靜態成員與靜態鏈接
struct ServiceType {} ;
struct Transport
{
static ServiceType service ;
};
//error: definition of ‘Transport::service’ is not in namespace enclosing ‘Transport’
//namespace { ServiceType Transport::service ; }
//error: ‘static’ may not be used when defining a static data member
//static ServiceType Transport::service ;
'static'值不一定意味着靜態鏈接。它恰好是相同的關鍵字,但其含義完全不同。你不能有靜態鏈接的成員。所以你想要的是不可能的。你*有*在某處定義符號。沒有辦法繞過它。 – 2013-03-07 13:16:21
我理解靜態關鍵字的多種用法之間的區別 – 2013-03-07 13:32:24