【问题标题】:irrklang engine was not declared at void [duplicate]irrklang 引擎未在无效时声明 [重复]
【发布时间】: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。)

标签: c++ function void irrklang


【解决方案1】:

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

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

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

main 中这样称呼它

playSound(engine);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多