如何在类之间访问变量

时间:2015-03-11 15:03:29

标签: c++

刚问一个问题。我试图在消息框中显示文件名。此文件名是完整路径的一部分。我需要在CChooseDirDlg类中使用Set方法设置路径,并使用Get方法在SecondDlg类中调用它。这两个类都被声明为朋友,但是在不同的文件中。但是,消息框没有返回任何内容。有任何想法吗?谢谢你的时间......

ChooseDirDlg.h

class CChooseDirDlg : public CDialog
{
// Construction

    friend class SecondDlg;


public:

    CString sPath; 

ChooseDirDlg.cpp:

void CChooseDirDlg::SetPath(CString path){

    path = m_DirTree.GetCurrentDir(); //find path
    sPath = path; 
}

CString CChooseDirDlg::GetPath(){

return sPath;

}

SecondDlg.cpp:

void SecondDlg::OnOK() 
{

    CChooseDirDlg dlg;


    dlg.SetPath(path); // set path 

    dlg.GetPath(); // get path


    char drive[_MAX_DRIVE]; 
    char dir[_MAX_DIR]; 
    char fname[_MAX_FNAME]; 
    char ext[_MAX_EXT]; 

// Split path to isolate filename 

_splitpath(dlg.GetPath(), drive, dir, fname, ext);


AfxMessageBox(fname);

}

1 个答案:

答案 0 :(得分:0)

您的代码没有显示您设置路径的位置,但我会假设这是在OnOk范围内的某处完成的。

该行:

CChooseDirDlg dlg;
OnOk方法中的

表示您正在创建CChoseDirDlg类的本地实例。

此实例不与该类的其他实例共享成员变量的值(如果它们不是静态的),因此如果您在另一个实例上调用SetPathdlg实例中的OnOk实例{1}}范围不具备数据。