tempad
Readygo技术搜索引擎 >>ASP技术 >> 高手请进!MFC中的静态成员变量,静态成员函数问题!!!!

高手请进!MFC中的静态成员变量,静态成员函数问题!!!!

Readygo技术搜索引擎 网络搜索 efish 2008-1-14 6:26:11

高手请进!MFC中的静态成员变量,静态成员函数问题!!!!

楼主cityyokel(原来如此)2002-05-14 14:59:59 在 VC/MFC / 基础类 提问

我在CMainFrame里定义了一个static   int   theVal;  
  定义了一个static   int   getVal(){return   theVal;}  
  然后在CMyView下定义一个菜单命令,OnDisVal(){int   m=CMainFrame::getVal();  
  CString   str;str.Format("the   value   is   :%d   !",m);  
  MessageBox(str);  
  }  
  编译后系统提示:MainFrm.obj   :   error   LNK2001:   unresolved   external   symbol   "public:   static   int     CMainFrame::theVal"   (?theVal@CMainFrame@@2HA)  
  Debug/testStatic2.exe   :   fatal   error   LNK1120:   1   unresolved   externals  
  Error   executing   link.exe.  
   
  我不懂为什么???  
  请高手们不吝赐教! 问题点数:20、回复次数:10Top

1 楼qiuanhong(练从难处练,用从易处用)回复于 2002-05-14 15:22:12 得分 5

static的东西,只能由static用吧....  
   
  Top

2 楼qiuanhong(练从难处练,用从易处用)回复于 2002-05-14 15:23:50 得分 0

static的东西,只能由static用吧....  
   
  Top

3 楼top_hipster(无为而无所不为)回复于 2002-05-14 15:54:17 得分 5

static定义的变量是有文件生存期的,只有在当前文件才可以使用的变量,所以编译时会出现   LNK2001错误,你可以把变量定义在static   int   getVal()实现的同一个文件中去。便不会有问题了Top

4 楼ShallonXu(总参谋长)回复于 2002-05-14 16:05:21 得分 5

int   CMainFrame::theVal   =   0;  
   
  你要在MainFrame.cpp里面初始化静态成员变量的  
   
  然后重新编译一下看看  
  Top

5 楼white_whan(C++ Fans)回复于 2002-05-14 16:13:31 得分 0

你可能没有#include   "MainFrm.h"  
  事实上这样使用时可以的!Top

6 楼white_whan(C++ Fans)回复于 2002-05-14 16:16:41 得分 0

对,你可能没有初始化该静态成员Top

7 楼cityyokel(原来如此)回复于 2002-05-14 16:54:51 得分 0

 
  实际上,我已经正确地初始化了。也include   了头文件了。而且,静态成员变量和静态成员函数也定义再同一个类里:CMainFrame;  
  但是,只要我在静态成员函数里一调用静态成员变量,马上就出错。  
  还是上面那两个错。  
  Top

8 楼andy_lau(天行键,君子当自强不息!)回复于 2002-05-14 18:07:04 得分 0

static定义的变量是有文件生存期的,只有在当前文件才可以使用的变量,所以编译时会出现   LNK2001错误,你可以把变量定义在static   int   getVal()实现的同一个文件中去。便不会有问题了  
  Top

9 楼cityyokel(原来如此)回复于 2002-05-14 21:08:24 得分 0

i   did   it.  
  but   it   won"t   work...  
  Top

10 楼huangguiyi(海狼)回复于 2002-05-14 21:12:34 得分 5

要先初始化呀.Top

责任编辑: efish 参与评论 查找更多:
相关文章
如何让选中的图片自动根据Pic控件大小自动缩略~ 如何让选中的图片自动根据Pic控件大小自动缩略~
知道一个汉字的unicode码,如何使用键盘输入这个汉字… 知道一个汉字的unicode码,如何使用键盘输入这个汉字,比如在word,写字板里面
窗体的最小化过程是什么呀?(100分) 窗体的最小化过程是什么呀?(100分)
高分请教:如何监视程序的运行!(高手请进) 高分请教:如何监视程序的运行!(高手请进)
求关于字符串的最好算法,要精品 求关于字符串的最好算法,要精品
有关简单的类型转换? 有关简单的类型转换?
VC中的同步机制,欢迎参与讨论------来者有分! VC中的同步机制,欢迎参与讨论------来者有分!
ado+sql server为何这么慢? ado+sql server为何这么慢?
如何对SYBASE数据库做日常备份,十万火急 如何对SYBASE数据库做日常备份,十万火急
从SQL SERVER里读数据到ACCESS里,但有3万多条,速度… 从SQL SERVER里读数据到ACCESS里,但有3万多条,速度太慢,怎么解决??
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn

分类导航
Readygo技术搜索引擎