检查实例是否为null或其中是否有内容 我在C++项目中有一个定时器类,在这里我有这些变量:

检查实例是否为null或其中是否有内容 我在C++项目中有一个定时器类,在这里我有这些变量:,c++,oop,C++,Oop,std::chrono::稳定时钟::时间点开始时间,结束时间 我在构造函数中设置了开始时间,但没有设置结束时间。我需要做的是检查endTime是否存在。作为java开发人员,我会在java中使用 EntTime=空NUL/COD>,但是由于NC++在C++中不存在,所以我需要找到一种方法来做同样的事情,但是在C++中。我还想找到这样做的一般方法,而不是特别针对这种情况 谢谢 我需要做的是检查endTime是否存在 time\u point是值类型,而不是引用类型,因此您无法将其与nullptr

std::chrono::稳定时钟::时间点开始时间,结束时间

我在构造函数中设置了开始时间,但没有设置结束时间。我需要做的是检查endTime是否存在。作为java开发人员,我会在java中使用<代码> EntTime=空NUL/COD>,但是由于NC++在C++中不存在,所以我需要找到一种方法来做同样的事情,但是在C++中。我还想找到这样做的一般方法,而不是特别针对这种情况

谢谢

我需要做的是检查endTime是否存在

time\u point
是值类型,而不是引用类型,因此您无法将其与
nullptr
进行比较

但是,如果未为
时间点
指定值,则默认情况下会初始化该时间点以保持时钟的历元(即
时间点::自历元开始的时间()
返回0)。可以测试的,例如:

if(endtime!=std::chrono::stable\u clock::time\u point())
{
//根据需要使用endTime。。。
}
if(endtime.time\u since_epoch()!=decltype(endtime)::duration::zero())
{
//根据需要使用endTime。。。
}

我还想找到这样做的一般方法,而不是特别针对这种情况

在C++17及更高版本中,可以使用,例如:

#包括
#包括
标准:时钟:稳定时钟:时间点开始时间;
std::可选结束时间;
...
if(endTime.has_value())//或:if(endTime)
{
//根据需要使用endTime.value()。。。
}

我需要做的是检查endTime是否存在

time\u point
是值类型,而不是引用类型,因此您无法将其与
nullptr
进行比较

但是,如果未为
时间点
指定值,则默认情况下会初始化该时间点以保持时钟的历元(即
时间点::自历元开始的时间()
返回0)。可以测试的,例如:

if(endtime!=std::chrono::stable\u clock::time\u point())
{
//根据需要使用endTime。。。
}
if(endtime.time\u since_epoch()!=decltype(endtime)::duration::zero())
{
//根据需要使用endTime。。。
}

我还想找到这样做的一般方法,而不是特别针对这种情况

在C++17及更高版本中,可以使用,例如:

#包括
#包括
标准:时钟:稳定时钟:时间点开始时间;
std::可选结束时间;
...
if(endTime.has_value())//或:if(endTime)
{
//根据需要使用endTime.value()。。。
}

您已经声明了它,因此它是存在的。如果您没有明确告诉它如何构造,则它是默认构造的。向对象添加“并且它可能为空”的一般解决方案是将其包装在
std::optional
中。另一种方法是给它分配一个特殊的哨兵值,它通常不会出现。不像java,所有的东西都是指针,C++中声明的对象不是指针(你用指针写代码< *> /COD>)。代码>类型obj
意味着
obj
不是空的,它是一个对象(出于同样的原因
inti;
在Java中不能为空)<代码>类型*obj=nullptr > null。“因为C++中没有空,”NULL在C++中作为“代码”> NulLPTR < /C>存在,但它主要与指针和指针类对象有关,有时与设计为空或空的对象有关。大多数对象(如您案例中的
time\u point
)都不兼容您已经声明了它,因此它是存在的。如果您没有明确告诉它如何构造,则它是默认构造的。向对象添加“并且它可能为空”的一般解决方案是将其包装在
std::optional
中。另一种方法是给它分配一个特殊的哨兵值,它通常不会出现。不像java,所有的东西都是指针,C++中声明的对象不是指针(你用指针写代码< *> /COD>)。代码>类型obj
意味着
obj
不是空的,它是一个对象(出于同样的原因
inti;
在Java中不能为空)<代码>类型*obj=nullptr > null。“因为C++中没有空,”NULL在C++中作为“代码”> NulLPTR < /C>存在,但它主要与指针和指针类对象有关,有时与设计为空或空的对象有关。大多数对象(如您的情况下的
time\u point
)不兼容