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`在声明命令中无效[重复]

搜索引擎重复网页发现技术分析

未在 Promise 的 .then() 部分内设置变量[重复]

图像未在 python OpenCV 中打开 [重复]

C++ 变量未在范围内声明

为什么var可以重复声明