关于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 是多余的,在程序中并没有这个
展开
 我来答
狂___暴击
2014-04-10 · TA获得超过104个赞
知道小有建树答主
回答量:101
采纳率:100%
帮助的人:75.6万
展开全部
CMineWnd *pMine = (CMineWnd*)AfxGetMainWnd();//实例化并初始化赋值,类型强转

ResetRecord本来就不是“CWnd”的成员,他是CMainWnd的成员,怎么能乱用?
追问
不太明白,为什么前一种方法就可以了,你是说可以使用的那种是先生成此类的对象,但这又有什么奥妙之处呢,不知可否给我讲解一下?
追答
前面一种是自己调用自己的一部分,就像你调用自己的手,那个赋值强转是为了类型检查,不然编译不过;后面编译器理解为AfxGetMainWnd()调用自己的成员函数,可惜没有,所以他报错找不到,你只是把AfxGetMainWnd()返回值强转类型,就能调用CMineWnd类的成员?就像你改成别人的名字就能使用它的一切么?显然不行的!
小狗鄙视猫
2014-04-10
知道答主
回答量:14
采纳率:0%
帮助的人:12.9万
展开全部
((CMineWnd*)AfxGetMainWnd())->ResetRecord(); 优先级
追问
这个强制转换的优先级要低一些?
那为什么比如(CButton*)GetDlgItem(IDC_CHECK)->SetWindowsText(_T(" "))却是可用的?
追答
不好意思看错了,你这肯定不行的。没有的 始终没有 强转也没用。满足隐式转化测行(同类型、子类转父类)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式