静态变量初始化的位置有些讲究。例如在某对话框定义了一个静态变量:
class CNewDialog : public CDialog
{
DECLARE_DYNAMIC(CNewDialog)
public:
CNewDialog(CWnd* pParent = NULL); // 标准构造函数
virtual ~CNewDialog();
// 对话框数据
enum { IDD = IDD_DIALOG1 };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
static int m_ThreadNum;//自定义的静态变量
public:
virtual BOOL OnInitDialog();
};
错误的初始化方法:在该类的构造函数中初始化
CNewDialog::CNewDialog(CWnd* pParent /*=NULL*/)
: CDialog(CNewDialog::IDD, pParent)
{
m_TreadNum = 1
}
正确做法:静态变量不能在类中初始化,应放在类外初始化
int CNewDialog::m_ThreadNum=1;