В моей программе я использую базу данных sqlite3.
Чтобы обработать сигнал Ctrl-C и корректно завершить программу, закрыв базу данных и закрыв все порты Midi (моя программа использует RtMidi), мне нужно настроить глобальный объект, который их хранит.Я создал класс:
class Config {
private:
sqlite3 *Database;
RtMidiIn *MidiIn;
RtMidiOut *MidiOut;
public:
sqlite3 *getDatabase();
void setDatabase(sqlite3 *mDatabase);
RtMidiIn *getMidiInStream();
void setMidiInStream(RtMidiIn *mMidiIn);
RtMidiOut *getMidiOutStream();
void setMidiOutStream(RtMidiOut *mMidiOut);
Config();
~Config();
};
Конструктор:
Config::Config() {
//open the midi i/o ports (irrelevant to the problem at hand)
sqlite3 *mDatabase = this->Database;
if (sqlite3_open(FILE_DATABASE, &mDatabase)) {
puts(ERROR_MESSAGE_DATABASE_OPEN_FAIL);
puts(sqlite3_errmsg(this->Database));
}
puts(NOTE_MESSAGE_DATABASE_OPEN);
}
Однако функции sqlite3_open()
и sqlite3_close()
дают мне ошибки по умолчанию, когда я пытаюсь вызвать их на mConfig->getDatabase()
.
Я попытался сделать поля общедоступными и передать mConfig->Database
, и это ничего не меняет.Как я могу сохранить базу данных внутри класса Config?
-------- РЕДАКТИРОВАТЬ: Я забыл включить функции базы данных get / set:
sqlite3 *Config::getDatabase() { return this->Database; }
void Config::setDatabase(sqlite3 *mDatabase) { this->Database = mDatabase; }