2012-09-15 59 views
0

我有一個C++類的靜態變量的定義:更改靜態變量的作用域

static SomeType MyClass::StaticVariable; 

在另一類我想使用這個變量沒有MyClass的前綴。我可以這樣做嗎?怎麼樣?

+0

您可以從聲明變量的類派生。 – dasblinkenlight

+1

爲什麼要更改範圍 - 如果您不希望範圍使其成爲全局的 –

回答

1

你可以使用一個參考:

class MyOtherClass { 
    static SomeType &StaticVariable = MyClass::StaticVariable; 
    // ... 
} 

你必須確保你不嘗試引用MyOtherClass::StaticVariableMyClass::StaticVariable之前已建成(在程序啓動時)。

+0

那麼如何不使用'MyClass ::'? – 2012-09-15 03:42:03

+0

因爲您可以在每次使用MyOtherClass時使用'StaticVariable'而不使用MyClass ::'限定符。如果這不能解決問題,那麼也許我不明白這個問題。 –

+0

但是你剛剛使用過它 - 這是作弊。 – 2012-09-15 03:44:56

0

只有當來自MyClassStaticVariable的「其他類」具有公開或受保護的可見性時,纔可以這樣做。或者,您可以將該成員變量移動到某個其他作用域,或者聲明一個引用/指針並將其指向該變量,以便稍後必須減少鍵入操作。