Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在全球范围内声明Boost ptime_C++_Boost_Posix - Fatal编程技术网

C++ 在全球范围内声明Boost ptime

C++ 在全球范围内声明Boost ptime,c++,boost,posix,C++,Boost,Posix,我正准备在全球范围内宣布这一时间。然而,我遇到了以下问题: 在我声明的主要功能之前: static boost::posix_time::ptime start_time; 然后在主函数内部初始化: boost::posix_time::ptime start_time(boost::posix_time::microsec_clock::universal_time()); 然后在主函数之外的函数中,我尝试转换为字符串并打印,结果得到“not-a-date-time” 全局变量未初始化或存

我正准备在全球范围内宣布这一时间。然而,我遇到了以下问题:

在我声明的主要功能之前:

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
函数中定义了一个局部变量,该局部变量会隐藏全局变量,但与全局变量无关

您不应在
main
函数中定义变量,只应为其分配:

start_time = boost::posix_time::microsec_clock::universal_time();
您可以在
main
函数中定义一个局部变量,该局部变量会遮挡全局变量,但与全局变量无关

您不应在
main
函数中定义变量,只应为其分配:

start_time = boost::posix_time::microsec_clock::universal_time();
不会从全局范围初始化
start\u time
。这将创建一个名为
start\u time
的新变量,其作用域为
main
,并隐藏全局
start\u time
。当您尝试在另一个函数中使用全局
start\u time
时,会出现
not-a-date-time
错误,因为
start\u times
从未用实际日期初始化

您需要在全局空间中进行初始化,在main中进行赋值,或者去掉全局变量,在main中声明它,并通过引用将其传递给需要它的函数。就我个人而言,如果可能的话,我会选择最后一个选项,因为全局性使代码更难推理

不会从全局范围初始化
start\u time
。这将创建一个名为
start\u time
的新变量,其作用域为
main
,并隐藏全局
start\u time
。当您尝试在另一个函数中使用全局
start\u time
时,会出现
not-a-date-time
错误,因为
start\u times
从未用实际日期初始化


您需要在全局空间中进行初始化,在main中进行赋值,或者去掉全局变量,在main中声明它,并通过引用将其传递给需要它的函数。就我个人而言,如果可能的话,我会选择最后一个选项,因为全局变量使代码更难推理。

您的其他函数是否在不同的cpp文件中?您的其他函数是否在不同的cpp文件中?