高手请进!MFC中的静态成员变量,静态成员函数问题!!!!
高手请进!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
-
相关文章
2秒记住本站域名
玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn
