关于C++类继承的问题
我这有这么一个类:classCMineWnd:publicCWnd{…………public:voidVoidResetRecord();…………}在某个函数里调用时用CMi...
我这有这么一个类:
class CMineWnd : public CWnd
{
…………
public:
void Void ResetRecord();
…………
}
在某个函数里调用时用
CMineWnd *pMine = (CMineWnd*)AfxGetMainWnd();
pMine->ResetRecord();
可以使用,但用下面的形式却不行,求大神解答,谢谢!
(CMineWnd*)AfxGetMainWnd()->ResetRecord();
编译报错:error C2039: “ResetRecord”: 不是“CWnd”的成员
那个……不好意思,那个Void 是多余的,在程序中并没有这个 展开
class CMineWnd : public CWnd
{
…………
public:
void Void ResetRecord();
…………
}
在某个函数里调用时用
CMineWnd *pMine = (CMineWnd*)AfxGetMainWnd();
pMine->ResetRecord();
可以使用,但用下面的形式却不行,求大神解答,谢谢!
(CMineWnd*)AfxGetMainWnd()->ResetRecord();
编译报错:error C2039: “ResetRecord”: 不是“CWnd”的成员
那个……不好意思,那个Void 是多余的,在程序中并没有这个 展开
2个回答
展开全部
CMineWnd *pMine = (CMineWnd*)AfxGetMainWnd();//实例化并初始化赋值,类型强转
ResetRecord本来就不是“CWnd”的成员,他是CMainWnd的成员,怎么能乱用?
ResetRecord本来就不是“CWnd”的成员,他是CMainWnd的成员,怎么能乱用?
追问
不太明白,为什么前一种方法就可以了,你是说可以使用的那种是先生成此类的对象,但这又有什么奥妙之处呢,不知可否给我讲解一下?
追答
前面一种是自己调用自己的一部分,就像你调用自己的手,那个赋值强转是为了类型检查,不然编译不过;后面编译器理解为AfxGetMainWnd()调用自己的成员函数,可惜没有,所以他报错找不到,你只是把AfxGetMainWnd()返回值强转类型,就能调用CMineWnd类的成员?就像你改成别人的名字就能使用它的一切么?显然不行的!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询