Может кто-нибудь объяснить, почему это происходит?Я написал следующее:
1) класс WindowManager, который реализован как синглтон и имеет метод Instance()
, определенный следующим образом:
static WindowManager * instance_;
//...
WindowManager * WindowManager::instance_ = 0;
WindowManager & WindowManager::Instance()
{
if (!instance_)
instance_ = new WindowManager();
return *instance_;
}
2) a WindowManager::createWindow
метод, который возвращает ссылку на недавно созданное окно, определенное так:
Window & WindowManager::createWindow()
{
windows_.push_back(Window());
return windows_.at(windows_.size() - 1);
}
3) метод Window::print
, который печатает сообщение внутри окна
В моей основной программе янаписали следующее:
ui::Window & win1 = ui::WindowManager::Instance().createWindow();
ui::Window & win2 = ui::WindowManager::Instance().createWindow();
win1.print("First window");
win2.print("Second window");
Это не работает!Выполняется только второй вызов print
(для win2
).Однако, если я изменю порядок, например, так:
ui::Window & win1 = ui::WindowManager::Instance().createWindow();
win1.print("First window");
ui::Window & win2 = ui::WindowManager::Instance().createWindow();
win2.print("Second window");
, тогда все будет работать как положено.Если бы кто-нибудь мог пролить свет на эту ситуацию, любая помощь будет принята с благодарностью.