从网上看了不少方法,但是都牵扯到头文件相互包含的问题,
CTestView* pTestView;
POSITION pos=GetFirstViewPosition();
pTestView=GetNextView(pos); 如果在文档类这么定义,必须包含视图类头文件,但是我视图类中已经包含了文档类的头文件,这样就导致程序出错了,怎么解决这个问题,或者有什么其他办法得到视图类指针呢? 求指点!!
CTestView* pTestView;
POSITION pos=GetFirstViewPosition();
pTestView=GetNextView(pos); 如果在文档类这么定义,必须包含视图类头文件,但是我视图类中已经包含了文档类的头文件,这样就导致程序出错了,怎么解决这个问题,或者有什么其他办法得到视图类指针呢? 求指点!!
在你的程序里,你引用了一个前置声明是指在程序员尚未给出完整定义之前对一个标示符(一个类型、一个变量或者一个函数)的声明。一个很简单的例子就是我们在函数A中使用了函数B,但是函数B的声明在函数A之后,这个时候,就需要对函数B进行前置声明,实际上就是在函数A之前提供一个函数B的原型你这里即是在doc头文件加前置声明
class CTestView;
如有必要在doc源文件加上testview.cpp(或者加在头文件也可),
在testview也是如此,在头文件
加前置声明
class CTestDoc;
源文件加testdoc.cpp(或者加在头文件也可)
那么究竟什么时候需要前置声明,什么时候需要头文件包含呢?有两点原则:第一个原则应该是,如果可以不包含头文件,那就不要包含了。这时候前置声明可以解决问题。如果使用的仅仅是一个类的指针,没有使用这个类的具体对象(非指针),也没有访问到类的具体成员,那么前置声明就可以了。因为指针这一数据类型的大小是特定的,编译器可以获知。第二个原则应该是,尽量在CPP文件中包含头文件,而非在头文件中。假设类A的一个成员是是一个指向类B的指针,在类A的头文件中使用了类B的前置声明并便宜成功,那么在A的实现中我们需要访问B的具体成员,因此需要包含头文件,那么我们应该在类A的实现部分(CPP文件)包含类B的头文件而非在声明部分(A的H文件)。
class CTestView;
就行了然后在你的CDocument类的cpp里要包含TestView.h
都到MainFrm.h里面引入要用到就引MainFrm.h真是方便。