Creating multiple windows in gtkmm

I started to learn gtkmm library and probably don't understand the way it works. Here's the problem: I've copied simple example from gtkmm tutorial, and want to modify it to create as many windows as I want by clicking the button.

Why can't I just write code like in function on_button_clicked() below?

class Hello : public Gtk::Window {
public:
    Hello() :m_button("create copy") {
        set_border_width(20);
        m_button.signal_clicked().connect(sigc::mem_fun(*this, &Hello::on_button_clicked));
        add(m_button);
        show_all_children();
    }

protected:
    void on_button_clicked();

    Gtk::Button m_button;

};

void Hello::on_button_clicked() {
    Hello new_window;
    new_window.show();
}

int main (int argc, char *argv[])
{
    auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example");

    Hello hw;

    return app->run(hw);
}