2017-01-08 61 views
0

我最近買了一本名爲「SFML遊戲開發實例」的書,代碼給了我一些問題。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); 
} 

我所做的一切,我能想到的代碼。我甚至從這本書的網站上下載了源代碼,我查閱了書籍勘誤表,看看是否應該有變化。其他人從事這本書的工作似乎沒有問題,而且下載源代碼仍然給我帶來了錯誤,這讓我覺得它與我有關,但是什麼?

+0

該代碼應該符合哪種版本的C++語言?你是否正確地配置了你的編譯器來支持該版本的C++? –

+0

它說它是最現代的版本,但沒有完全指定,我不知道這是你甚至可以配置的東西讓我看看這個快, – Riles

+0

一些版本的C++要求編譯器產生一個代碼錯誤被定義爲對其他版本的C++是合法的。你必須知道什麼版本的C++代碼應該符合,你必須爲你的編譯器配置該版本。否則,當您使用在某些版本中合法並在其他版本中禁止的構造時,成功是不可能的。 –

回答

0

您的代碼需要支持您的編譯器不支持的C++ 11功能。請參閱VS2012的C++11 features列表。如果要編譯C++ 11代碼,請升級到完全支持C++ 11的更新版本。