关于静态成员变量的问题,谢谢回答

liujin1234 2009-07-10 10:34:09
我在一个文件内定义了一个静态成员变量,(我在定义该类的.cpp文件中初始化了)然后我想在另外一个文件里用,下面这是部分代码,我引用到的这个静态成员变量依然为0,这是怎么回事?谢谢回答,

// 调用挂断事件按钮,获取当前时间,写入日志文件,
CString time = CTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S");
vTelEndTime=CTime::GetCurrentTime();
CTimeSpan cts;
CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;

CMDIChildWnd *pChild = (CMDIChildWnd *) pFrame->GetActiveFrame();
CMyFormView *pView = (CMyFormView *) pChild->GetActiveView();
CPropPage1 * cp1;
cp1 = (CPropPage1 *)pView->m_PropSheet.GetActivePage();

CTime telStartTime=CPropPage1::vTelStartTime;
cts=vTelEndTime-telStartTime;

CString timelen=cts.Format("%H:%M:%S");
CString weijie;
weijie="视频去电";

CPropPage4* cp4;

(CPropPage4 *)pView->m_PropSheet.GetActivePage();

cp4->TelHistory0(time,timelen,m_tel,weijie);

vTelStartTime就是这个变量
...全文
20 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
liujin1234 2009-07-10
  • 打赏
  • 举报
回复
谢谢楼上的回答了,我知道错误在哪了,因为我赋值前定义了一个模态对话框,所以后面的都不会执行了,所以才会出现这个值为0的情况。
jcsnwpu 2009-07-10
  • 打赏
  • 举报
回复
楼主用的应该是个静态全局变量,建议用全局变量。
静态全局变量的生存周期贯穿于整个运行过程中,但它的
作用域只存在于定义它的那个文件中。
快乐鹦鹉 2009-07-10
  • 打赏
  • 举报
回复
CPropPage1 * cp1;
cp1 = (CPropPage1 *)pView->m_PropSheet.GetActivePage();

CTime telStartTime=CPropPage1::vTelStartTime;
==
你都已经得到cp1了。
首先看一下cp1,其中的vTelStartTime是多少。
其次,CTime telStartTime = cp1.vTelStartTime看看。
jcsnwpu 2009-07-10
  • 打赏
  • 举报
回复
静态变量的作用域是当前文件吧,在其他文件应该不可以使用吧。vTelStartTime
应该是个全局变量,不知你为什么定义为静态变量。
fengrx 2009-07-10
  • 打赏
  • 举报
回复
楼主把它放在stdafx.h文件中,定义为全局变量试下。
spring203 2009-07-10
  • 打赏
  • 举报
回复
vTelStartTime被赋值的地方楼主贴下!

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧