class CBaDialog : public CDialog
{
public:
       CBaDialog(CWnd* pParent = NULL);
       CListCtrl m_ListCtrlb;
       int aver1;}
void CBaDialog::OnExport2() 
{int k=1;
  CString stri2 = m_ListCtrlb.GetItemText(k,2);
aver1=atoi(stri2);
}现在要在另一个类中调用aver1的值为什么会出错。
class Cchartresult : public CDialog
{public:
Cchartresult(CWnd* pParent = NULL);protected:
CMSChart m_Chart;//控件对象
}
#include "BaDialog.h"
BOOL Cchartresult::OnInitDialog() 
{m_Chart.GetDataGrid().SetData(1, 2, aver1, 0);
//此处用到了。aver1变量}
问题解决马上结贴thank you!!

解决方案 »

  1.   

    class CBaDialog;//类声明class Cchartresult : public CDialog
    {public:
    Cchartresult(CWnd* pParent = NULL);
             CBaDialog temp; //然后用temp来访问
    protected:         
    CMSChart m_Chart;//控件对象
    }
      

  2.   

    也可用静态变量来实现:
    class CBaDialog : public CDialog
    {
    public:
        CBaDialog(CWnd* pParent = NULL);
        CListCtrl m_ListCtrlb;
        static int aver1;
    };
    int CBaDialog :: aver1=0; //必须初始化调用时:
    BOOL Cchartresult::OnInitDialog() 
    {m_Chart.GetDataGrid().SetData(1, 2, CBaDialog :: aver1, 0);
      

  3.   

    aver1为CBaDialog类的成员 且aver1又不是静态变量 所以在Cchartresult类中是无法直接调用的 
    两种方法解决 
    1.将aver1设为静态成员变量
    2.在Cchartresult中创建CBaDialog类的对象 比如
    CBaDialog bDlg;
    int i=bDlg.aver1;
    这样来调用
      

  4.   

    这个问题不是很好解决嘛,你已经包含了那个类的头文件了,只需声明一个他的类对象,再用这个类对象去访问他的成员变量不就结了.
    BOOL Cchartresult::OnInitDialog() 
    {
    CBaDialog *dlg=new CBaDialog();
    m_Chart.GetDataGrid().SetData(1, 2, dlg->aver1, 0);