Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFGUI] Tworzenie obiektu, którego klasa nie ma domyslnego konstruktora

Ostatnio zmodyfikowano 2015-07-19 22:32
Autor Wiadomość
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
C/C++
auto obj = sfg::Window::Create();

Da się zrobić tak
C/C++
class a
{
    sfg::Window::Ptr window; //funkcja Create() zwraca sfg::Window::Ptr
   
    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.
P-134918
jankowalski25
» 2015-07-19 19:12:13
W źródłach możesz przeczytać:
C/C++
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:
C/C++
namespace sfg {
   
    /** Window.
    */
    class SFGUI_API Window
        : public Bin
    {
    public:
        typedef std::shared_ptr < Window > Ptr; //!< Shared pointer.
        typedef std::shared_ptr < const Window > PtrConst; //!< Shared pointer.
//edit2: To jest nawet w naszej dokumentacji (» standard C++11shared_ptr).
P-134923
czosnek17
Temat założony przez niniejszego użytkownika
» 2015-07-19 22:32:12
Ok rozumiem, dzięki.
P-134940
« 1 »
  Strona 1 z 1