как конвертировать int в хроно миллисекунды - PullRequest
0 голосов
/ 02 марта 2020

У меня есть переменная типа миллисекунд, и я хочу установить ее равной уравнению. Вот что я сделал до сих пор. Он компилируется и запускается, но когда он попадает в эту строку, он перестает вводить оператор if ниже.

time = duration<int>(750-(lvl*50));

Еще одна вещь, на которую следует обратить внимание, - это то, что у меня есть оператор if, который также может быть частью проблемы, которую я ' м, сравнивая разные типы данных. здесь оператор if:

if(time_since_last >= time) {

время с последней переменной - это разница во времени 2 high_resolution_clock :: now ()

Ответы [ 2 ]

0 голосов
/ 02 марта 2020

Вы можете попробовать что-то вроде этого. Для преобразования целочисленного значения в хроно в миллисекундах используйте std::chrono::milliseconds(value);

auto old_time = std::chrono::high_resolution_clock::now();
this_thread::sleep_for(chrono::milliseconds(500));
auto new_time = std::chrono::high_resolution_clock::now();
auto time_since_last = std::chrono::duration_cast<chrono::milliseconds>(new_time - old_time);   
cout << time_since_last.count();

int value = 1000;
auto time = std::chrono::milliseconds(value);
cout << "   " <<time.count();

if (time_since_last >= time) {
    /* do something */
}
0 голосов
/ 02 марта 2020

Вы не должны использовать интервалы для сравнения. Вместо этого используйте абсолютные значения. Например:

next_time = curr_time + duration<int>( ... etc ... );
if( time > next_time ) {
    // do something
}
...