类中静态成员函数初始化有关问题
类中静态成员函数初始化问题
请教在cmydoc类定义了一个静态成员函数,如果要如何初始化?应该在哪儿初始化?使用了MFC。
在Cmydoc.h中声明了:
static CLogFile * m_pLogFile;
出现以下错误提示:
error LNK2001: unresolved external symbol "public: static class CLogFile * CmyDoc::m_pLogFile " (?m_pLogFile@CmyDoc@@2PAVCLogFile@@A)
------解决方案--------------------
晕死, 楼主要补补C++了.
1, static成员会被编译器用0值初始化. 这是C++标准, 楼主这里用的是指针, 简直完美, 根本不用初始化. 编译器为你做好了一切.
2, 类成员的初始化不是那样做的, 应该是: CLogFile * CMyDoc::m_pLogFile = 0;
------解决方案--------------------
这样初始化类成员静态变量的
type classname::valname = val;
------解决方案--------------------
静态成员不能在构造函数中初始化,因为静态成员是所有对象共享的,而构造函数是每一个对象产生都会被调用,静态函数初始化一般在CPP文件中,也就是在类的外部,而写法一般是:
返回值 类名::变量名=初值.有点象是定义变量.
------解决方案--------------------
变量不存在声明或定义问题,定义就是声明,声明就是定义。函数或类才有定义和声明的区别。
比如class A;
这是声明。
class A
{
int a;
};
这是定义.
------解决方案--------------------
变量真的不存在声明和定义的区别吗:
extern int a;
这是什么啊,不是声明吗?
请教在cmydoc类定义了一个静态成员函数,如果要如何初始化?应该在哪儿初始化?使用了MFC。
在Cmydoc.h中声明了:
static CLogFile * m_pLogFile;
出现以下错误提示:
error LNK2001: unresolved external symbol "public: static class CLogFile * CmyDoc::m_pLogFile " (?m_pLogFile@CmyDoc@@2PAVCLogFile@@A)
------解决方案--------------------
晕死, 楼主要补补C++了.
1, static成员会被编译器用0值初始化. 这是C++标准, 楼主这里用的是指针, 简直完美, 根本不用初始化. 编译器为你做好了一切.
2, 类成员的初始化不是那样做的, 应该是: CLogFile * CMyDoc::m_pLogFile = 0;
------解决方案--------------------
这样初始化类成员静态变量的
type classname::valname = val;
------解决方案--------------------
静态成员不能在构造函数中初始化,因为静态成员是所有对象共享的,而构造函数是每一个对象产生都会被调用,静态函数初始化一般在CPP文件中,也就是在类的外部,而写法一般是:
返回值 类名::变量名=初值.有点象是定义变量.
------解决方案--------------------
变量不存在声明或定义问题,定义就是声明,声明就是定义。函数或类才有定义和声明的区别。
比如class A;
这是声明。
class A
{
int a;
};
这是定义.
------解决方案--------------------
变量真的不存在声明和定义的区别吗:
extern int a;
这是什么啊,不是声明吗?