Этот код отлично работает в Windows и Linux, но в Android не вызывает appCfg :: ~ appCfg(). Как изменить код для автоматического уничтожения appCfg (в закрытой программе) на всех платформах?Singleton destroy на разных платформах
.cpp
appCfg * appCfg::p_instance = 0;
SingletonDestroyer appCfg::destroyer;
SingletonDestroyer::~SingletonDestroyer() {
delete p_instance;
}
void SingletonDestroyer::initialize(appCfg* p) {
p_instance = p;
}
appCfg& appCfg::getInstance() {
if(!p_instance) {
p_instance = new appCfg();
destroyer.initialize(p_instance);
}
return *p_instance;
}
appCfg::appCfg()
{
pSetting = new QSettings(Const::SettingPath()+"/main.cfg",QSettings::IniFormat);
}
//called on Windows and Linux platforms, but not on Android
appCfg::~appCfg()
{
pSetting->sync();
delete pSetting;
}
...
Почему вы возвращающую ссылку на ** значение * * указателя в методе getInstance? В основном вы не возвращаете ничего, связанное с ** курсором ** p_instance **. – ozgur
@ozur. p_instance, инициализированный при первом вызове getInstance() – Bleach