静态变量初始化的位置有些讲究。例如在某对话框定义了一个静态变量: 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;