在头部声明中:
#ifndef SOUND_CORE
#define SOUND_CORE
static SoundEngine soundEngine;
...
但是 SoundEngine 的构造函数被调用了多次,这怎么可能呢?它被声明为全局静态的。
我是这样调用它的:
#include "SoundCore.h"
并直接使用它
soundEngine.foo()
谢谢你
extern
对象都存在问题(从设计角度和C++工作方式两方面考虑)。我的首选方法是在函数内实例化对象(如main()
或类似的高层调用链),并将引用(或可能是智能指针,取决于对象生命周期的复杂性)传递给所有需要它的对象。 - Mike Seymourglobal
或static
。单例
、全局
或静态
各有其优缺点,选择哪种方式需要仔细考虑。 - Alok Save