我还是再开一贴吧.好多朋友没有回答 我的这个问题~~~ 关于静态成员的.
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;
[解决办法]
没错,类本身就是申明,就相当于一个模板,所以它根本就分配内存。必须要用这个类建立了一个对象,才会分配内存。同样类里面的静态成员也是个声明而已,声明这个类(模板)里面包含了一个静态变量,而由于它是静态的,不从属于任何一个对象,所以必须单独在类外进行定义。