C++ irrklang引擎未声明为无效

C++ irrklang引擎未声明为无效,c++,function,void,irrklang,C++,Function,Void,Irrklang,编辑2: 解决了的!使用下面的代码,它工作了 irrklang::ISoundEngine* engine = irrklang::createIrrKlangDevice(); 只需将代码放在代码顶部。(可能是include或namespace的下一行) 我正在使用irrKlang播放音频,但我遇到了一个问题: #include <irrKlang.h> void playSound() { engine->play2D("src/Click.wav"); }

编辑2: 解决了的!使用下面的代码,它工作了

irrklang::ISoundEngine* engine = irrklang::createIrrKlangDevice();
只需将代码放在代码顶部。(可能是include或namespace的下一行)


我正在使用irrKlang播放音频,但我遇到了一个问题:

#include <irrKlang.h>

void playSound() {
    engine->play2D("src/Click.wav");
}

int main() {
    irrklang::ISoundEngine* engine = irrklang::createIrrKlangDevice();
    playSound();

    engine->drop();
    return 0;
}
#包括
void playSound(){
引擎->播放2D(“src/Click.wav”);
}
int main(){
irrklang::ISoundEngine*引擎=irrklang::createIrrKlangDevice();
播放声音();
引擎->下降();
返回0;
}
当我运行这段代码时,它显示“引擎”(在空中)没有在这个范围内声明

我在int main测试这个,但它可以工作。问题是,它只在主要方面起作用,而在无效方面不起作用

我可以用什么来修复这个错误?还是一只虫子


提前谢谢。

这是意料之中的事
irrklang::ISoundEngine*引擎
main
函数中定义,但不在
playSound()中定义

一个简单的解决方案是将引擎作为参数传递

void playSound(irrklang::ISoundEngine* engine) {
    engine->play2D("src/Click.wav");
}
main
中这样称呼它

playSound(engine);
你称之为“虚空”的东西通常被称为“函数”。(
void
是一种类型,类似于
int