Недавно я купил книгу под названием «Разработка игры 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);
}
Я сделал все, что я могу думать. Я даже загрузил исходный код с веб-сайта книги, Ive проверил ошибки в файлах, чтобы увидеть, должно ли быть изменение. Другие люди, работающие над этой книгой, похоже, не имеют проблемы в этой части, и тот факт, что загрузка исходного кода все еще дает мне ошибку, заставляет меня думать, что это имеет какое-то отношение ко мне, но что?
Какая версия языка C++ - это код, который должен соответствовать? Правильно ли настроили ваш компилятор для поддержки этой версии C++? –
Он говорит, что для самой современной версии, но точно не указывает, я не знал, что это было что-то, что вы могли бы даже настроить, дайте мне понять, что быстро, – Riles
Некоторые версии C++ требуют, чтобы компилятор выдавал ошибку для кода, который определяется как правовая для других версий C++. Вы должны знать, какая версия кода на C++ должна соответствовать, и вы должны настроить свой компилятор для этой версии. В противном случае успех невозможен, когда вы используете конструкции, которые являются законными в некоторых версиях и запрещены в других. –