两个类,classA,classParent.
定义classA的classA.h文件:
class classA : public classParent
{...};但是我的classA.h并没有包含classParent.h啊。
怎么编译好好的,没有
error C2504: 'classParent' : base class undefined
的错误呢?我所看到的是在classA.cpp有#include "stdAfx.h"
stdAfx.h中有#include "classParent.h"
但是classA.h文件不能找到classParent.h啊。只是它的实现文件cpp文件能找到
classParent.h罢了。是因为有其它的原因吗?

解决方案 »

  1.   

    不可能,我的程序运行的好好的,而且classA,classParent是极其重要的两个类!
      

  2.   

    可以十分肯定的是
    class classA : public classParent
    {...};
    是不可能是无效代码的!
      

  3.   

    看看classA.h:
    #if !defined(AFX_classA_H__F1547346_B3E7_4A67_82CC_26CEE849AD44__INCLUDED_)
    #define AFX_classA_H__F1547346_B3E7_4A67_82CC_26CEE849AD44__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    // classA.h : header file
    //
    #include "Resource.h"
    #include <afxtempl.h> //for CList/////////////////////////////////////////////////////////////////////////////#ifndef __AFXEXT_H__
    #include <afxext.h>
    #endifclass classA : public classParent
    {...};--------------------------------------
    要用到classParent是不是必须在这个文件中加#include "classParent.h"?
    这里显然没有加。
      

  4.   

    日,不是无效代码怎么会被跳过?
    除非你 Resource.h里面引用了classparent.h
      

  5.   

    至于为什么可以肯定这个classA.h被编译了,
    可以有以下两个理由:
    1。没有这个classA.h简直不可思议,程序怎么会按照我的思路来运行
    2。在这个文件中稍微故意写出一个错误的语法,都会编译报错!
    到底是什么地方的设置导致这样,我以前一直没有意识到这个问题,现在要把
    classA ,classParent两个类移到别的工程(这两个类很重要,我封装的很好,想拿到别的工程中用)然后就报错,说error C2504: 'classParent' : base class undefined
    这个时候我才发现我原来的工程里面同样这样写竟然一直好好的。
      

  6.   

    Resource.h没有一个include !classA,classParent都是我自己写的类。
    afxtempl.h,afxext.h显然都是系统的。
    我真是糊涂了。
      

  7.   

    你#include "Resource.h"
    #include <afxtempl.h> //for CList/////////////////////////////////////////////////////////////////////////////#ifndef __AFXEXT_H__
    #include <afxext.h>
    这几个头文件里面没引用 classparent.h?
      

  8.   

    这两个类以前我用在好几个工程中,都是好好的,
    就是今天加到另外一个新的工程中就不行了,我看看才发现这个问题。是不是这个必须要加include "classParent.h",有没有可能是别的地方的设置问题 。
    我搜索了原来的不报错的工程中的所有文件
    只有两个地方用到了include "classParent.h"
    一个是classParent.cpp.一个是stdAfx.h但是classA.h没有include stdAfx.h,只是classA.cpp才有stdAfx.h
      

  9.   

    你把stdafx.h里面的引用去掉绝对就通不过了真正用到的时候编译器才会编译的
      

  10.   

    是的,把stdafx.h里面的引用去掉就通不过了。
    也许这种写法就可以让classA.h不用#include "ClassParent.h"不过我不断的开新工程测试,好像现在编译又没有问题了,(我现在都不知道为什么刚才会有问题。)但是现在又报这个link错误。这是新的问题呢,还是老的问题。
    strmbasd.lib(dllentry.obj) : error LNK2001: unresolved external symbol "class CFactoryTemplate *  g_Templates" (?g_Templates@@3PAVCFactoryTemplate@@A)
    strmbasd.lib(dllentry.obj) : error LNK2001: unresolved external symbol "int  g_cTemplates" (?g_cTemplates@@3HA)strmbasd.lib是我的classA要用的。