我在类CDlg头文件中定义 int m_Level权限是public, 并此类的构造函数赋值 在另一个类中用到此变量 void CLoginDlg::OnLoginEnter()
{
CDlg::m_Level=1;
OnOK();
}
已经包含上面类头文件,编译时提示如下: : error C2597: illegal reference to data member 'CDlg::m_Level' in a static member function 是我使用方法不对,还是其它的
不用全局变量
望指点一下?
{
CDlg::m_Level=1;
OnOK();
}
已经包含上面类头文件,编译时提示如下: : error C2597: illegal reference to data member 'CDlg::m_Level' in a static member function 是我使用方法不对,还是其它的
不用全局变量
望指点一下?
正常的变量的话,应该先定义一个CDlg的对象,然后使用.操作符访问。
比如extern CDlg Mydlg;
//其它地方有定义
void CLoginDlg::OnLoginEnter()
{
MyDlg.m_Level=1;
OnOK();
}
试过,没用,提示错误:单独重新工程试的:error LNK2001: unresolved external symbol "public: static int CDdsDlg::m_name" (?m_name@CDdsDlg@@2HA)
error LNK2001: unresolved external symbol "public: static int CDdsDlg::m_name" (?m_name@CDdsDlg@@2HA)
: fatal error LNK1120: 1 unresolved externals
然后要在cpp里初始化。
static int CDlg::m_Level = 0;
把5楼回答的:static int CDlg::m_Level = 0;
去掉static,直接int CDlg::m_Level = 0;
在CLoginDlg中,extern int m_Level;
应该能用了。
在另一个类(CLoginDlg)中用到此变量
===============#include "Dlg.h"void CLoginDlg::OnLoginEnter()
{
CDlg *p=(CDlg *)GetParent();
p->m_Level=1; OnOK();
}
//Class1.h
class CClass1
{
public:
CClass1();
virtual ~CClass1(); static int m_nFlag;};
//Class1.cpp
#include "Class1.h"
int CClass1::m_nFlag = 0;CClass1::CClass1()
{}CClass1::~CClass1()
{}//Class2.h
#include "Class1.h"class CClass2 : public CClass1
{
public:
CClass2();
virtual ~CClass2();};//Class2.cpp
#include "Class2.h"CClass2::CClass2()
{
CClass1::m_nFlag = 0;
}CClass2::~CClass2()
{}