我构造了一个类,希望个别成员变量是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)请问我错在哪里呢?
应该如何修改?

解决方案 »

  1.   

    MDI主窗体菜单问题??? VC
    我在MDI中打开一个子窗体,正常情况下,子窗体最大化后主窗体的菜单右边有最小化、还原、关闭的系统按钮(不是指标题右边的),我在子窗体ONSIZE()里控制它,在子窗体最大化时,更换主窗体菜单,但是呢这时主菜单右边却没有最小化,还原、关闭按钮,请问哪位大侠可以告诉我如何才能让它加上这些按钮呢???非常感谢!!!!CHildFrame::OnSize(.........)
    IF (type=maximized)
    {
    CMenu menu;
    menu.LoadMenu(IDR_TRUNMENU);
    AfxGetMainWnd()-SetMenu(&menu);
    AfxGetMainWnd()->DrawMenu...();
    }
      

  2.   

    static的,
    是可以CTest::m_x这样使用的,
    你不可以把static设置成peotected的
      

  3.   

    public:
    static int m_x;
      

  4.   

    静状成员必须初始化
    在程序中写:
    CTest::m_x=0;
    且一般不能把static设置成peotected的
      

  5.   

    把你的变量定义成PUBLIC的试试
      

  6.   

    在Test.cpp中要对static变量初使化,如不赋初使值则m_x为0。如:int CTest::m_x;int CTest::GetX()
    {
    return m_x;
    }
      

  7.   

    int CTest::m_x;
    在*.cpp中定义一次
      

  8.   

    class CTest
    {
    public:
    int GetX(){return m_x;};
    protected:
    static int m_x;
    };//int CTest::m_x;
    void CDlg16Dlg::OnButton9() 
    {
    CTest test;
    int x = test.GetX();
    }
    和你的问题相同
      

  9.   

    static 型的成员不能在类对象中调用可以在类外调用 classname::staticname
    非static型的不能在类外调用只能在类中调用 objectname.staticname
      

  10.   

    还是 he_zhidan(何志丹:www.vcshare.net) 说的方法可行。
    不是protected型的问题,也不是没赋初值的问题。
    可是为什么呢?!
    明明在头文件中已经声明过一次了,还要在.cpp中再次声明呢?
      

  11.   

    非静态函数怎么能访问静态变量呢?
    ----------------------------
    public:
             static int GetX();
    protected:
    static int m_x;在.cpp文件中
    int CTest::GetX()
    {
    return m_x;
    }
    ------------------
      

  12.   

    qkhhgutg(太子) 
    -----------------------------
    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();
    ------------------------------------