在类声名里:
CButtonST m_btnN1;
CButtonST& btnCurrent;
然后运行说要在构造函数里先赋值:
:\WINDOWS\Desktop\soha\sohaDlg.cpp(65) : error C2758: 'btnCurrent' : must be initialized in constructor base/member initializer list
        c:\windows\desktop\soha\sohadlg.h(74) : see declaration of 'btnCurrent'
然后我在构造函数里这样:
btnCurrent=m_btnN1;还是不行:
C:\WINDOWS\Desktop\soha\sohaDlg.cpp(65) : error C2758: 'btnCurrent' : must be initialized in constructor base/member initializer list
        c:\windows\desktop\soha\sohadlg.h(74) : see declaration of 'btnCurrent'
C:\WINDOWS\Desktop\soha\sohaDlg.cpp(70) : error C2582: 'CButtonST' : 'operator =' function is unavailable
这是怎么回事 呢?

解决方案 »

  1.   

    btnCurrent = new(CButtonST);
      

  2.   

    引用不是这么用的。
    两种办法:
    CButtonST m_btnN1;
    CButtonST& btnCurrent=m_btnN1;或假定你的构造函数为CYourClassCYourClass::CYourClass() : btnCurrent(m_btnN1)
    {
       ...
    }
      

  3.   

    用成员变量初始化列表初始化即
    CClass::CClass() : m_n(5), btnCurrent(m_btnN1)
      

  4.   

    引用和指针必须用成员变量初始化列表初始化即
    CClass::CClass() : m_n(5), btnCurrent(m_btnN1)
      

  5.   

    前面几位都说得很对,引用要在声明的时候初始化
    但不是要你在构造函数里面初始化,它的意思是你在构造的时候进行初始化
    引用初始化是要使用初始化列表,形式为在构造函数后面加“:”,然后
    btnCurrent(m_btnN1)
    不过前面几位都说了;不过这样做显然很愚蠢
    因为直接btnCurrent=m_btnN1;就可以了。
    但是不要把它放在构造函数里面,因为根本就不认识;
     bluebohe(薄荷)说得好,简洁明了
    CButtonST m_btnN1;
    CButtonST& btnCurrent=m_btnN1;