静态成员有时会让我困惑。我已经知道如何初始化内建类型,例如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