2015-10-12 3 views
0

EDIT 2: Решенный! Используйте приведенный ниже код, и он сработал!Двигатель irrklang не был объявлен недействительным

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; 
} 

Когда я запускаю этот код, он показывает, что «двигатель» (что в пустоте) не было объявлено в этой области.

Я проверяю это на int main, но он работает. Проблема в том, что он работал только в основном, но не в пустоте.

Что-нибудь могу исправить эту ошибку? Или это ошибка?

Заранее спасибо.

+0

Вещь вы называете «пустота», как правило, называется «функцией» , ('void' - это тип, например' int'.) – molbdnilo

ответ

2

Это ожидается. irrklang::ISoundEngine* engine определяется в main функцией, но не в playSound().

Простым решением было бы передать двигатель в качестве аргумента

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

и main называют его, как этот

playSound(engine); 
Смежные вопросы