在我声明的标题中
#ifndef SOUND_CORE
#define SOUND_CORE
static SoundEngine soundEngine;
...
但是 SoundEngine 的构造函数被多次调用,这怎么可能,当它被声明为全局静态时
我称之为
#include "SoundCore.h"
然后直接使用
soundEngine.foo()
谢谢你
最佳答案
我会使用 extern
而不是静态的。这就是 extern
的用途。
在标题中:
extern SoundEngine soundEngine;
在随附的源文件中:
SoundEngine soundEngine;
这将使用实例创建一个翻译单元,并且包含标题将允许您在代码中的任何地方使用它。
// A.cpp
#include <iostream>
// other includes here
...
extern int hours; // this is declared globally in B.cpp
int foo()
{
hours = 1;
}
// B.cpp
#include <iostream>
// other includes here
...
int hours; // here we declare the object WITHOUT extern
extern void foo(); // extern is optional on this line
int main()
{
foo();
}
关于c++ - C++中的静态类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6291145/