2015-02-09 2 views
-4

У меня есть проблема с сохранением метки времени -C++ хроы Время разговора Указатель

В заголовочном файле у меня есть следующий код:

long *_lastHeartbeat; 

А теперь я хочу сохранить время в _lastHeartbeat:

_lastHeartbeat = std::chrono::system_clock::now().time_since_epoch()/std::chrono::milliseconds(1); 

Но я получаю только эту ошибку -

error: invalid conversion from ‘std::__success_type<long int>::type {aka long int}’ to ‘long int*’ [-fpermissive] 
lastHeartbeat = std::chrono::system_clock::now().time_since_epoch()/std::chrono::milliseconds(1); 
                    ^

И я не знаю, что делать.

EDIT:
Основная проблема решена, но я имею другой вопрос: Я сохранил это так: _lastHeartbeat = станд :: хроно :: system_clock :: сейчас() time_since_epoch()/станд :: хронографа.: : миллисекунды (1); Но тогда поток остановился после: https://github.com/THOMAS-Projekt/THOMAS/blob/master/MotorControl.cpp#L222 Это произошло и при сохранении других данных.

Если я commet его, он работал

+1

Вы не можете назначить 'long' в * указатель * на' long'. –

+0

Что вы пытаетесь достичь? Почему бы не сохранить std :: chrono :: time_point? – TNA

+0

Как это сделать в противном случае? Без указателя? – Waishon

ответ

1

Если вы хотите сохранить миллисекунды:

auto timestamp = std::chrono::system_clock::now(); 
auto time_since_epoche = timestamp.time_since_epoch(); 
auto milliseconds_since_epoch = std::chrono::timepoint_cast<std::chrono::milliseconds>(time_since_epoche); 
std::cout "milliseconds since epoche: " << miliseconds_since_epoche.count(); 
0

Вы можете использовать неподписанные долго вместо длинного указателя.

unsigned long lastHeartBeat = 
    std::chrono::system_clock::now().time_since_epoch()/
    std::chrono::milliseconds(1); 

Я надеюсь, что это будет хорошо работать в вашем случае.

Смежные вопросы