全局声明 Boost ptime
Declare Boost ptime globally
我正在尝试在全球范围内声明提升 ptime。但是我遇到了以下问题:
在main函数之前声明:
static boost::posix_time::ptime start_time;
然后我在主函数里面初始化:
boost::posix_time::ptime start_time(boost::posix_time::microsec_clock::universal_time());
然后在主函数外的函数中,我尝试转换为字符串并打印,我得到 "not-a-date-time";
全局变量没有被初始化或者范围有问题?
感谢您的帮助。
你在main
函数里面定义了一个local变量,一个隐藏全局变量但与全局变量无关的变量。
你不应该在 main
函数中定义变量,只分配给它:
start_time = boost::posix_time::microsec_clock::universal_time();
boost::posix_time::ptime start_time(boost::posix_time::microsec_clock::universal_time());
不会从全局范围初始化 start_time
。这将创建一个名为 start_time
的新变量,其作用域为 main
并隐藏全局变量 start_time
。当您尝试在另一个函数中使用全局 start_time
时,您会收到 not-a-date-time
错误,因为 start_times
从未使用实际日期进行初始化。
您要么需要在全局中进行初始化space,在main中进行赋值,要么摆脱全局变量,在main中声明它,并通过引用传递给需要的函数它。如果可能的话,我个人会选择最后一个选项,因为全局变量使代码更难推理。
我正在尝试在全球范围内声明提升 ptime。但是我遇到了以下问题:
在main函数之前声明:
static boost::posix_time::ptime start_time;
然后我在主函数里面初始化:
boost::posix_time::ptime start_time(boost::posix_time::microsec_clock::universal_time());
然后在主函数外的函数中,我尝试转换为字符串并打印,我得到 "not-a-date-time";
全局变量没有被初始化或者范围有问题? 感谢您的帮助。
你在main
函数里面定义了一个local变量,一个隐藏全局变量但与全局变量无关的变量。
你不应该在 main
函数中定义变量,只分配给它:
start_time = boost::posix_time::microsec_clock::universal_time();
boost::posix_time::ptime start_time(boost::posix_time::microsec_clock::universal_time());
不会从全局范围初始化 start_time
。这将创建一个名为 start_time
的新变量,其作用域为 main
并隐藏全局变量 start_time
。当您尝试在另一个函数中使用全局 start_time
时,您会收到 not-a-date-time
错误,因为 start_times
从未使用实际日期进行初始化。
您要么需要在全局中进行初始化space,在main中进行赋值,要么摆脱全局变量,在main中声明它,并通过引用传递给需要的函数它。如果可能的话,我个人会选择最后一个选项,因为全局变量使代码更难推理。