irrklang 引擎未在无效时声明 [重复]
Posted
技术标签:
【中文标题】irrklang 引擎未在无效时声明 [重复]【英文标题】:irrklang engine was not declared at void [duplicate] 【发布时间】:2015-10-12 13:22:48 【问题描述】:编辑 2: 解决了!使用下面的代码,它就成功了!
irrklang::ISoundEngine* engine = irrklang::createIrrKlangDevice();
只需将上面的代码放在代码的顶部即可。 (可能是包含或命名空间的下一行)
我正在使用 irrKlang 播放音频,但我遇到了问题:
#include <irrKlang.h>
void playSound()
engine->play2D("src/Click.wav");
int main()
irrklang::ISoundEngine* engine = irrklang::createIrrKlangDevice();
playSound();
engine->drop();
return 0;
当我运行此代码时,它显示“引擎”(在 void 中)未在此范围内声明。
我在 int main 上对此进行了测试,但它确实有效。问题是它只在 main 上有效,在 void 上无效。
我可以用什么来修复这个错误?还是bug?
提前致谢。
【问题讨论】:
你称之为“void”的东西通常被称为“function”。 (void
是一种类型,例如 int
。)
【参考方案1】:
这是意料之中的。 irrklang::ISoundEngine* engine
定义在 main
函数中,但不在 playSound()
中。
一个简单的解决方案是将引擎作为参数传递
void playSound(irrklang::ISoundEngine* engine)
engine->play2D("src/Click.wav");
在main
中这样称呼它
playSound(engine);
【讨论】:
以上是关于irrklang 引擎未在无效时声明 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
`shopt -s inherit_errexit`在声明命令中无效[重复]