2017-01-08 17 views
0

最近「SFML Game Development by Example」という本を購入しました。C++で期待される式ですが、エラーが見つかりません

m_window.create({ m_windowSize.x, m_windowSize.y, 32 }, m_windowTitle, style); 

ブラケットは中括弧({を満たしている場合は、それが予想される表現があることを私に伝えます:ここで

は私に迷惑を与える行です。ここで

は、私は私が考えることができるすべてのものをやったファイル全体のコード

#include "Window.h" 

Window::Window(){ 
    Setup("Window", sf::Vector2u(640, 480)); 
} 

Window::Window(const std::string& l_title, const sf::Vector2u& l_size){ 
    Setup(l_title, l_size); 
} 

Window::~Window(){ 
    Destroy(); 
} 

void Window::Setup(const std::string& l_title, const sf::Vector2u& l_size){ 
    m_windowTitle = l_title; 
    m_windowSize = l_size; 
    m_isFullscreen = false; 
    m_isDone = false; 
    Create(); 
} 

void Window::Create(){ 
    auto style = (m_isFullscreen ? sf::Style::Fullscreen : sf::Style::Default); 
    m_window.create({ m_windowSize.x, m_windowSize.y, 32 }, m_windowTitle, style); 
} 

void Window::Destroy(){ 
    m_window.close(); 
} 

void Window::Update(){ 
    sf::Event event; 
    while(m_window.pollEvent(event)){ 
     if(event.type == sf::Event::Closed){ 
      m_isDone = true; 
     }else if(event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::F5){ 
      ToggleFullscreen(); 
     } 
    } 
} 

void Window::ToggleFullscreen(){ 
    m_isFullscreen = !m_isFullscreen; 
    Destroy(); 
    Create(); 
} 

void Window::BeginDraw(){ 
    m_window.clear(sf::Color::Black); 
} 

void Window::EndDraw(){ 
    m_window.display(); 
} 

bool Window::IsDone(){ 
    return m_isDone; 
} 

bool Window::IsFullscreen(){ 
    return m_isFullscreen; 
} 

sf::Vector2u Window::GetWindowSize(){ 
    return m_windowSize; 
} 

void Window::Draw(sf::Drawable& l_drawable){ 
    m_window.draw(l_drawable); 
} 

です。私は本のWebサイトからソースコードをダウンロードしたこともあり、変更があったかどうかを確認するために書籍の正誤表を確認しました。この本を使って作業している他の人は、この部分で問題はないようですが、ソースコードをダウンロードするとエラーが表示されるという事実が、私と何か関係があると思いますが、何ですか?

+0

このコードはどのバージョンのC++言語に準拠していますか?そのバージョンのC++をサポートするようにコンパイラを正しく構成しましたか? –

+0

最新のバージョンではありますが、正確には指定されていませんが、設定しても構わないということはわかりませんでした。 – Riles

+0

C++のいくつかのバージョンでは、他のバージョンのC++では合法的であると定義されています。どのバージョンのC++コードが遵守されているのか知っていなければならず、そのバージョン用にコンパイラを設定する必要があります。それ以外のバージョンでは、いくつかのバージョンでは合法で、他のバージョンでは禁止されているコンストラクトを使用すると成功することはできません。 –

答えて

0

あなたのコードでは、コンパイラがサポートしていないC++ 11機能のサポートが必要です。 VS2012のリストはC++11 featuresを参照してください。 C++ 11コードをコンパイルする場合は、C++ 11を完全にサポートする最新のバージョンにアップグレードしてください。

関連する問題