我构造了一个类,希望个别成员变量是static型的,所以在类中这样声明:
public:
int GetX();
protected:
static int m_x;在.cpp文件中
int CTest::GetX()
{
return m_x;
}可是编译的时候出现了这样的错误:
est.obj : error LNK2001: unresolved external symbol "protected: static int CTest::m_x" (?m_x@CTest@@1HA)请问我错在哪里呢?
应该如何修改?
public:
int GetX();
protected:
static int m_x;在.cpp文件中
int CTest::GetX()
{
return m_x;
}可是编译的时候出现了这样的错误:
est.obj : error LNK2001: unresolved external symbol "protected: static int CTest::m_x" (?m_x@CTest@@1HA)请问我错在哪里呢?
应该如何修改?
我在MDI中打开一个子窗体,正常情况下,子窗体最大化后主窗体的菜单右边有最小化、还原、关闭的系统按钮(不是指标题右边的),我在子窗体ONSIZE()里控制它,在子窗体最大化时,更换主窗体菜单,但是呢这时主菜单右边却没有最小化,还原、关闭按钮,请问哪位大侠可以告诉我如何才能让它加上这些按钮呢???非常感谢!!!!CHildFrame::OnSize(.........)
IF (type=maximized)
{
CMenu menu;
menu.LoadMenu(IDR_TRUNMENU);
AfxGetMainWnd()-SetMenu(&menu);
AfxGetMainWnd()->DrawMenu...();
}
是可以CTest::m_x这样使用的,
你不可以把static设置成peotected的
static int m_x;
在程序中写:
CTest::m_x=0;
且一般不能把static设置成peotected的
{
return m_x;
}
在*.cpp中定义一次
{
public:
int GetX(){return m_x;};
protected:
static int m_x;
};//int CTest::m_x;
void CDlg16Dlg::OnButton9()
{
CTest test;
int x = test.GetX();
}
和你的问题相同
非static型的不能在类外调用只能在类中调用 objectname.staticname
不是protected型的问题,也不是没赋初值的问题。
可是为什么呢?!
明明在头文件中已经声明过一次了,还要在.cpp中再次声明呢?
----------------------------
public:
static int GetX();
protected:
static int m_x;在.cpp文件中
int CTest::GetX()
{
return m_x;
}
------------------
-----------------------------
CHildFrame::OnSize(.........)
IF (type=maximized) // ERROR (type == maximized)
{
CMenu menu;
menu.LoadMenu(IDR_TRUNMENU);
AfxGetMainWnd()-SetMenu(&menu);
AfxGetMainWnd()->DrawMenu...();
}// Append default CView OnSize()
CView;;OnSize();
------------------------------------