不同类之间访问对象的问题
来源:百度知道 编辑:UC知道 时间:2024/09/28 09:34:28
文件1 TestDlg.h
#include "btn.h"
Class CTestDlg: public CDialog
{
CBtn m_btn1;//关联的是两个按钮
CBtn m_btn2;
}
文件2 Btn.h
class CBtn : public CButton()
{
}
文件3 Btn.cpp
CBtn::CBtn()
{
m_btn1.ShowWindow(SW_SHOW); //错误句,提示“m_btn1 : undeclared identifier”
}
在文件3中,为什么不能直接用m_btn1.ShowWindow(),如果说 m_btn1没定义,那我在文件2中加入#include "TestDlg.h"之后,编译时还是出现"未定义"
的错误提示。
正确的操作又应该怎么样呢?
#include "btn.h"
Class CTestDlg: public CDialog
{
CBtn m_btn1;//关联的是两个按钮
CBtn m_btn2;
}
文件2 Btn.h
class CBtn : public CButton()
{
}
文件3 Btn.cpp
CBtn::CBtn()
{
m_btn1.ShowWindow(SW_SHOW); //错误句,提示“m_btn1 : undeclared identifier”
}
在文件3中,为什么不能直接用m_btn1.ShowWindow(),如果说 m_btn1没定义,那我在文件2中加入#include "TestDlg.h"之后,编译时还是出现"未定义"
的错误提示。
正确的操作又应该怎么样呢?
你难道没发现m_btn1是CTestDlg类的成员吗?
CBtn::CBtn()
{
m_btn1.ShowWindow(SW_SHOW); //错误句,提示“m_btn1 : undeclared identifier”
} //这段代码只是引用CBtn类的m_btn1成员而已,因为CBtn类没有m_btn1成员,所以会提示未定义的标识符。你把m_btn1.去掉,写成
CBtn::CBtn()
{
ShowWindow(SW_SHOW);
}
试试。
你的设计思路也有一点问题
m_btn1是CBtn的对象,不是CBtn的成员变量。