CView类指针问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 14:38:05
一个MFC单文档程序,取工程名为 MY,利用向导生成框架后,在工作区可以看到5个类:CAboutDlg , CMainFrame , CMYApp , CMYDoc , CMYView.
然后我自己又添加了一个类:CStudent, 我想在CStudent类的成员函数中使用CMYView类的数据成员,我是这样做的:我先在CStudent类中定义一个指向CMYView类对象的指针,我打算用它去存储CStudent对象的地址,即CMYView* pCMYView; 结果编译的时候说这句话缺少“;”(在“*”的前面),即它不认得CMYView*这个类型,我以为缺少头文件,后来我在Student.h中加上#include "MYView.h" 结果还是不行,错误指向MYView.h中的这样一句话:public:
CMYDoc* GetDocument() const;
语法错误 : 缺少“;”(在“*”的前面)
缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
“GetDocument”: 缺少返回类型;假定为返回“int”的成员函数
可是我根本也没动过MYView.h中的内容,不知道什么原因。

后来在CStudent类中我把CMYView* pCMYView; 换成CView* pCView; ,并在CMYView类的OnCreate函数中把指针赋给它:pCView=this;编译通过,可是pCView=this中的this是指向CMYView类对象的,可是到了CStudent类中pCView中却保存的是CView对象的指针,这是为什么啊,我怎么样才能得到指向CMYView对象的指针呢?请不吝赐教。
加上了还是不行。

你在MYView里包含了Student,在Student又包含了MYView,这样太乱了,很容易出问题,用你后面说的方法吧。

在Student.cpp中#include "MYView.h"

在Student.cpp中使用pCView时强制转化一下:
把pCView都变成((CMYView *)pCView)

这样使用:((CMYView *)pCView)->function();

在Student.h中加上
#include "MYDoc.h"
#include "MYView.h"