我在一个类的头文件中定义了一个接受CArray<CUAV,CUAV&>参数的函数
CArray的头文件可以包含在.h或者.cpp中,都行
但是CUAV是我自己写的类。它的UAV.h就只能在定义这个函数的.h文件中include,写在.cpp文件中就提示“未定义的标识符”

解决方案 »

  1.   

    写在.h和.cpp中都行,说明这个玩意先前已经被包含了,你不写都行,你可以删除掉试试看~~~~
    不能在.cpp中include是因为编译的时候读到头文件时不知道你那个CUAV是个什么玩意~~~
      

  2.   


    那肯定啊,因为你在使用你的这个类 CUAV 前,必须让编译器知道,这个 CUAV 它代表一个类,而不是一个字符串或者什么的。如果你在类A 的.h 里声明CArray<CUAV,CUAV&amp;> ,而在类A 的.cpp 里才包含你的类 CUAV 的.h 文件的话,那编译器在编译到类A 的.h 文件时,遇到CArray<CUAV,CUAV&amp;> 这里面的CUAV ,就不知道它到底代表什么了。总的来说,包含文件的“规矩”,就是,在你使用前,必须先包含,因为编译器是死的,你如果不先声明就直接使用,它就编译不通过。
      

  3.   


    是不是说,编译器是在读到“include XXX.h”时就去读这个源文件了?而这时还没有读到我写在下一行的include"UAV.h"?
      

  4.   


    经过试验,二楼说的对,确实可以删掉再经过试验,我说的也对。我在XXX.cpp文件里把#include "UAV.h"写到#include "XXX.h"之前,XXX.h文件就没有出错~