0

理由はわかりませんが、クラスでウィンドウを作成するときにエラーが発生します。

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

game.cpp(11): error C2064: term does not evaluate to a function taking 2 arguments

私はこれの原因を理解していません、責任はクラスのコンストラクターにあります:

window.cpp

Application::Application(std::map<string,string>& s, std::map<string, string>& t){

settings = s;
theme = t;
window(sf::VideoMode(800, 600), "Test"); //error is here

}

私のヘッダーwindow.hでは、プライベートで次のように設定されています。

private:
    std::map<string, string> settings;
    std::map<string, string> theme;
    sf::RenderWindow window;

main.cppはそれを次のように設定します:

Application game(setting,style);

これの原因は何でしょうか?

4

1 に答える 1

2

メンバー初期化子を使用してメンバーを初期化します。

Application::Application(std::map<string,string>& s, std::map<string, string>& t)
:settings(s),
 theme(t),
 window(sf::VideoMode(800, 600), "Test") 
{
}

これはメンバー初期化子リストと呼ばれます。メンバー初期化子リストは、コロンで始まる初期化子のコンマ区切りリストで構成されます。引数リストの閉じ括弧の後、関数本体の開き括弧の前に配置されます。

于 2012-11-11T06:29:56.123 に答える