could somebody please explain why this happens? I have written the following:
1) a WindowManager class which is implemented as a singleton and has an Instance() method, defined like so:
static WindowManager * instance_;
//...
WindowManager * WindowManager::instance_ = 0;
WindowManager & WindowManager::Instance()
{
    if (!instance_)
        instance_ = new WindowManager();
    return *instance_;
}
2) a WindowManager::createWindow method that returns a reference to a newly created window, defined like so:
Window & WindowManager::createWindow()
{
    windows_.push_back(Window());
    return windows_.at(windows_.size() - 1);
}
3) a Window::print method that prints a message inside the window
In my main program, I have written the following:
ui::Window & win1 = ui::WindowManager::Instance().createWindow();
ui::Window & win2 = ui::WindowManager::Instance().createWindow();
win1.print("First window");
win2.print("Second window");
This does not work! Only the second call to print is executed (for win2).
However, if I change the order, like so:
ui::Window & win1 = ui::WindowManager::Instance().createWindow();
win1.print("First window");
ui::Window & win2 = ui::WindowManager::Instance().createWindow();
win2.print("Second window");
then everything works as expected. If anybody could shed some light on this situation, any help would be greatly appreciated.
 
    