Clock Clock();
Давайте просто назовем ваш sf::Clock
экземпляр чем-то, что отличается от имени этого класса, например clock
. Хотя это не ошибка, это может сбивать с толку.
Clock clock();
Кроме того, обратите внимание, что эта строка может быть неоднозначной для компилятора, поскольку она выглядит как прототип функции с именем clock
, который не аргумент и возвращает sf::Clock
экземпляр. Просто удалите разделы.
Clock clock;
sf::Time t1 = seconds(0.1f);
t1
не используется в этой функции, может быть удалено.
Time time1 = Clock::getElapsedTime()
Эта строка пытается для вызова функции stati c getElapsedTime
. Класс sf::Clock
не имеет функции с именем stati c, названной так, просто функция-член . Этот вызов и тот, что после while
l oop, являются причиной описанных вами ошибок компилятора.
Time time1 = Clock.getElapsedTime()
Это все еще не хорошо. Обратите внимание на пропущенный ;
в конце строки.
Time time1 = Clock.getElapsedTime();
while (time1 << 0.16666666);
Здесь вы использовали оператор <<
, то есть оператор «сдвиг влево». Вы имели в виду оператор «меньше чем» (<
), но поскольку вы хотите проверить, истек ли определенный период времени c, вам следует использовать оператор «больше чем» (>
).
while (time1 > 0.16666666);
Но это все равно не сработает, потому что time1
- это момент sf::Time
, и вы не можете сравнить sf::Time
с плавающей точкой. Вы должны вызвать asSeconds
член time1
, который возвращает затраченное время в секундах как число с плавающей точкой.
while (time1.asSeconds() > 0.16666666);
Еще одна важная вещь, вы положили ;
в конце строки, это означает, что while
l oop имеет пустое тело и будет работать вечно (если time1
не больше 0.16666666
). Вы должны удалить точку с запятой в конце, и ваша следующая строка станет телом, если l oop.
while (time1.asSeconds() > 0.16666666)
time1 = clock::getElapsedTime();
Эта строка заменяет значение time1
на результат getElapsedTime
. Вы имели в виду добавление истекшего времени к time1
, вы можете добиться этого, заменив =
на +=
.
time1 += Clock::getElapsedTime();
В строке выше все еще содержатся еще два ошибки. Как и раньше, sf::Clock
не имеет функции stati c, называемой getElapsedTime
, плюс clock
не существует в вашем коде (просто Clock
с большой буквы C
).
time1 += Clock.getElapsedTime();
Я предполагаю, что вы хотели подождать определенное количество времени c, с этим while
l oop. Для этого вы можете использовать функцию sf::sleep
.
sf::sleep(sf::seconds(0.16666666f));