靜態成員有時會讓我困惑。我已經知道如何初始化內建類型,例如int
沿的int myClass::statVar = 10;
線,您在.cpp文件放置的東西簡單,但我有以下類似的東西:對象靜態成員的初始化
class myClass
{
public:
// Some methods...
protected:
static RandomGenerator itsGenerator;
}
的基本思想是足夠簡單:myClass
需要訪問它的一個成員函數的隨機生成器。由於每個對象都相當大,我也只能擁有少數幾個發生器實例。但是,RandomGenerator
類型需要「初始化」,可以這麼說,通過調用RandomGenerator::Randomize()
,編譯器不允許你這麼做,因爲它不是一個const rvalue(是嗎?)。
那麼我該如何做這項工作?
或者在這種情況下,我應該不使用靜態變量,並以其他方式做?
這是壞的。外部類不應該知道發生器的存在。你只改變了它的方式。這是一種解決方法,但它不是解決方案。 – Gangnus 2011-12-19 07:59:43
@Gangnus:不一定。封裝一切都很好,但從外部提供策略沒有任何問題,特別是如果您有可能將更多的責任歸咎於現有的外部類別。 – 2013-08-13 13:51:48