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文件中?