非静态成员引用必须与特定对象相对

#pragma once

// CDlgLoad 对话框

class CDlgLoad : public CDialogEx
{
	DECLARE_DYNAMIC(CDlgLoad)

public:
	CDlgLoad(CWnd* pParent = NULL);   // 标准构造函数
	virtual ~CDlgLoad();

...
public:
	afx_msg void OnBnClickedButtonLoad();
	afx_msg void OnBnClickedButtonSet();
	/*static*/int a;
};

CDlgSet::CDlgSet(CWnd* pParent /*=NULL*/)
	: CDialogEx(CDlgSet::IDD, pParent)
	, m_editServerIp(_T(""))
	, m_editPort(_T(""))
{
	int b=CDlgLoad::a;
}

报错:非静态成员必须与特定对象相对。

分析:

类的成员有两种:静态成员和实例成员(包括实例和函数)。实例成员的存储空间属于具体的实例,不同实例(对象)的同名成员拥有不同的存储空间;静态成员的存储空间是固定的,与具体的实例(对象)无关,被该类的所有实例共享。

访问静态成员可以用ClassName::MemberName,也可以用ClassName.MemberNme,但最好用前者,因为很容易就可以判定成员是静态成员。

访问实例成员只能用ClassName.MemberName,不能用ClassName::MemberName.

本例中就是因为用ClassName::MemberName访问实例变量出错。

详情 http://blog.csdn.net/shenqi67/article/details/7533094

你可能感兴趣的:(C++,调试,点滴,存储,null,class)