在我声明的标题中

#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/

10-11 18:24