我希望能够在下面的类中初始化静态成员scalingfactor
:
class ScalingRect: public Rect
{
public:
static float scalingfactor;
...
};
我想我会在 .cpp 中使用另一个类的静态成员函数来初始化它
float ScalingRect::Rect = Engine::GetScaleFactor();
但是,我不想在 Engine
类准备好之前调用 GetScaleFactor()
。我如何确保它在正确的时间被调用?
最佳答案
与其将静态作为类成员,不如在静态方法中将其设为静态,并返回对它的引用:
class ScalingRect: public Rect
{
public:
static float& scalingfactor()
{
if (!Engine::initilized()) throw ("initilize Engine first!");
static float value = Engine::GetScaleFactor();
return _value;
}
...
};
现在,理想情况下,您第一次调用 scalingfactor() 应该在引擎初始化器的末尾,或者只要您确保第一次调用 scalingfactor() 发生在引擎初始化器完成之后,这应该可以工作。 .
关于c++ - 在发生某些其他初始化后,如何初始化类的静态成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4044204/