C ++ chrono时间对话指针

时间:2015-02-09 14:11:22

标签: c++ c++11

我在保存时间戳方面存在问题 -

在头文件中,我有以下代码:

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);
                                                                    ^

而且我不知道该怎么做。

编辑:
主要问题已经解决,但我还有另外一个问题:我这样保存:_lastHeartbeat = std :: chrono :: system_clock :: now()。time_since_epoch()/ std :: chrono :: milliseconds(1); 但之后线程停止了: https://github.com/THOMAS-Projekt/THOMAS/blob/master/MotorControl.cpp#L222如果我保存其他数据,也会发生这种情况。

如果我把它搞砸了,那就有效了

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

您可以使用无符号长指针而不是长指针。

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

我希望在你的情况下这样做会很好。