Доброго времени суток!
Я может недопонимаю концепт, но у меня возникла следующая загвоздка: я пишу некое приложение с использованием FMOD-либы. У меня есть класс, который будеть хранить и воспроизводить несколько звуков, каждый звук будет экземпляром класса. Реализация общения с FMOD будет вне класса абстрактна, но инициализировать новый звукопоток под каждый звук не практично и я делаю основной экземпляр класса FMOD-системы static. Но у меня возникает проблема, я не могу передать ссылку на адрес памяти от этого static экземпляра. Наглядно:
Так НЕ могу:
Код | //sound.hpp #include "fmod/fmod.hpp"
class TickSound { static FMOD::System *fmod; public: TickSound(); };
//sound.cpp #include "sound.hpp" #include "fmod/fmod.hpp"
TickSound::TickSound() { FMOD::System_Create(&this->fmod); }
|
Отчёт об ошибке:
Код | src/sound.o: In function `TickSound::TickSound()': sound.cpp:(.text+0x17): undefined reference to `TickSound::fmod' collect2: выполнение ld завершилось с кодом возврата 1
|
А вот так (когда убираю static) МОГУ:
Код | //sound.hpp #include "fmod/fmod.hpp"
class TickSound { FMOD::System *fmod; public: TickSound(); };
//sound.cpp #include "sound.hpp" #include "fmod/fmod.hpp"
TickSound::TickSound() { FMOD::System_Create(&this->fmod); }
|
Я не могу понять, почему? Кто-нибудь может прояснить? И как реализовать то, что я пытаюсь правильно? Заранее сердечно благодарю! |