首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

小弟我还是再开一贴吧.好多朋友没有回答 小弟我的这个有关问题~ 关于静态成员的

2012-01-30 
我还是再开一贴吧.好多朋友没有回答 我的这个问题~~~ 关于静态成员的.VC2005新建一个MFC项目.非document/v

我还是再开一贴吧.好多朋友没有回答 我的这个问题~~~ 关于静态成员的.
VC   2005   新建一个MFC项目.非document/view模式.

随便找个类.比如ChildView类里添加一个静态成员.

static   HHOOK   myhook

然后在类里任何一个地方使用它,myhook=NULL     或者ChildView::myhook=NULL   全部编译不过去.显示链接错误?   为什么?



[解决办法]
静态成员函数应该在类外给出初值。
HHOOK ChildView::myhook = NULL;
也就是应该写在你类外
例如
class A
{
static int a;
}
int A::a==0;
他的生命周期好象是和你程序生命周期一样.
[解决办法]
好像是这样说的:在类里的静态成员变量,写在类里面的static HHOOK myhook;是一个声明,而不是定义,所以在CPP文件中初始化它的时候要写成:HHOOK ChildView::myhook = NULL;
[解决办法]
没错,类本身就是申明,就相当于一个模板,所以它根本就分配内存。必须要用这个类建立了一个对象,才会分配内存。同样类里面的静态成员也是个声明而已,声明这个类(模板)里面包含了一个静态变量,而由于它是静态的,不从属于任何一个对象,所以必须单独在类外进行定义。

热点排行