0

クラスからレンダリングウィンドウを返す方法に少しこだわっています。戻り値のタイプが間違っているのか、構文が間違っているのか、あるいはその両方なのかわかりません。

私のmain.cppには次のものがあります。

Window Render(800, 600, "Test");
sf::RenderWindow window = Render.Init();

このための私のクラスは次のとおりです。

        Window::Window(int x, int y, std::string title){
            ResoX = x;
            ResoY = y;
            Title = title;
        }

    sf::RenderWindow Window::Init(){
        return screen(sf::VideoMode(ResoX,ResoY,Title));
    }

クラスのヘッダー:

class Window
{
    private:
        int ResoX, ResoY;            
        std::string Title;
        sf::RenderWindow screen;
    public:
    Window(int, int, std::string);

    sf::RenderWindow Init();
};

私のエラーは次のとおりです。

error C2665: 'sf::VideoMode::VideoMode' : none of the 3 overloads could convert all the argument types could be 'sf::VideoMode::VideoMode(unsigned int,unsigned int,unsigned int)' while trying to match the argument list '(int, int, std::string)'

error C2064: term does not evaluate to a function taking 1 arguments

誰かが私がこれを修正する方法を知っていますか?

4

1 に答える 1

1

SFMLドキュメントより( http://www.sfml-dev.org/documentation/1.6/classsf_1_1VideoMode.php#a9478572db06121f70260e6b9dc21704e )

sf::VideoMode コンストラクターは次のように宣言されます。

sf::VideoMode::VideoMode(unsigned int   ModeWidth,
                         unsigned int   ModeHeight,
                         unsigned int   ModeBpp = 32 
                         )  

つまり、3 番目のパラメーターを文字列として渡すことはできません。次のように呼び出すことができます。

return screen(sf::VideoMode(ResoX,ResoY));
于 2012-11-09T23:34:10.347 に答える