[SFGUI] Tworzenie obiektu, którego klasa nie ma domyslnego konstruktora
Ostatnio zmodyfikowano 2015-07-19 22:32
czosnek17 Temat założony przez niniejszego użytkownika |
[SFGUI] Tworzenie obiektu, którego klasa nie ma domyslnego konstruktora » 2015-07-19 18:04:20 Chcę w swojej klasie mieć obiekt typu sfg::Window. Nie ma on domyślnego konstruktora, a w tutorialu jest tworzony w ten sposób auto obj = sfg::Window::Create();
Da się zrobić tak class a { sfg::Window::Ptr window; a() { window = sfg::Window::Create(); } };
ale funkcje oczekujące w argumencie okna Window nie przyjmują Window::Ptr więc to rozwiązanie odpada. Jeszcze zastanawia mnie dlaczego z auto nie ma tego problemu, przecież jeżeli funkcja Create() zwraca Window::Ptr, to chyba takiego typu powinna być zmienna. |
|
jankowalski25 |
» 2015-07-19 19:12:13 W źródłach możesz przeczytać: namespace sfg { Window::Window( std::uint8_t style ) : m_style( style ) , m_dragging( false ) , m_resizing( false ) { } |
//edit: Ten konstruktor jest chroniony, więc nie utworzysz obiektu. Ale mając sfg::Window::Ptr możesz wykorzystać metodę std::shared_ptr::get. Przyjrzyj się deklaracji w pliku SFGUI/Window.hpp: namespace sfg { class SFGUI_API Window : public Bin { public: typedef std::shared_ptr < Window > Ptr; typedef std::shared_ptr < const Window > PtrConst;
|
//edit2: To jest nawet w naszej dokumentacji ( shared_ptr). |
|
czosnek17 Temat założony przez niniejszego użytkownika |
» 2015-07-19 22:32:12 Ok rozumiem, dzięki. |
|
« 1 » |