2016-09-14 3 views
1

私はSFMLへの探究の中で、小さなエンジンに取り組んでいます。私は現在、WindowManagerクラスを使用しています。ここに私のコードです。どのようにsf :: RenderWindowを返すのですか?

class WindowManager 
{ 
private: 
    sf::RenderWindow window; 

public: 
    void setWindow(int x, int y, std::string title) 
    { 
     window.create(sf::VideoMode(x, y, 32), title, sf::Style::Titlebar | sf::Style::Close); 
    } 

    sf::RenderWindow getWindow() 
    { 
     return window; 
     //Error Here 
    } 
}; 

答えて

4

あなたはsf::RenderWindowの継承図を見てみる場合:

inheritance diagram

あなたはそれがsf::NonCopyableを継承することがわかります。そのコピーを返すことはできません。コピーコンストラクタと代入演算子はプライベートなので、コピーすることはできません。あなたの代わりに何ができるか

は、私はあなたがゲッターにウィンドウをコピーしたい疑問sf::RenderWindow&、またはsf::RenderWindow*、またはstd::shared_ptr<sf::RenderWindow>、または...

2

を返すのいずれかです。あなたのウィンドウへの参照を返すと思っています:

class WindowManager { 
// private: private is useless there. 
    sf::RenderWindow window; 

public: 
    // Returning a reference. Note the '&' after the type. 
    const sf::RenderWindow& getWindow() const { 
     return window; 
    } 
}; 
関連する問題