缺少类型说明符和另一个问题

Missing type specifier and one more question

本文关键字:另一个 问题 说明符 类型      更新时间:2023-10-16

我正在尝试进行简短的时间声明

#pragma once
#include <chrono>
class Foo//: public SINGLETON<Foo>
{
public:
using point = std::chrono::steady_clock::time_point;
using secs  = std::chrono::duration_cast<std::chrono::seconds>;
using now   = std::chrono::steady_clock::now();
};

这就是整个代码。 第一个问题,这段代码不想编译。 第一个编译错误:

error: 'duration_cast<std::chrono::seconds>' in namespace 'std::chrono' does not name a type
using time_secs  = std::chrono::duration_cast<std::chrono::seconds>;

第二个错误;

error: expected type-specifier
using time_now   = std::chrono::steady_clock::now();

现在一个关于这些用法的问题,我想像这样使用它们;

time_point  GetElapsedtTime(){return time_secs(time_now - Another_time_point ); }

我可以像上面一样使用它们吗?

我正在尝试设置时间点介绍一个变量,然后倒计时,直到它达到 1 小时,例如,当 1 小时过去时......做某事。

using(在此上下文中(等同于typedef。您正在为类型指定一个新名称。

这个:using point = std::chrono::steady_clock::time_point;很好。std::chrono::steady_clock::time_point是一种类型;你正在创建一个新名字。

这个:using secs = std::chrono::duration_cast<std::chrono::seconds>;不是,因为std::chrono::duration_cast<std::chrono::seconds>不是一个类型 - 它是一个函数。

同样,std::chrono::steady_clock::now();不是一种类型。它是类型std::chrono::time_point<std::chrono::steady_clock>的值。

(这就是编译器给你的"不命名类型"消息所说的(