error C2504 base class undefined

news/2024/12/21 20:38:02/

今天遇到的bug,觉得很诡异,明明引用了头文件却找不到基类定义,百度之后解决,觉得是个值得注意的地方,很细小,但是很难查~~~以后注意!引以为戒。
之前写程序时,最喜欢把类的头文件全部放到stdafx.h 或类似自定义的某个头文件中(如include_files.h),然后在不同的文件中需要调用别的文件中的类或变量或函数什么的,只要直接#include “include_files.h”就行了,今天终于遇到了error C2504错误。具体说明如下:
有以下几个文件:include_files.h AA.h AA.cpp BB.h BB.cpp

//include_files.h  
#pragma once  
...  
#include "AA.h"  
#include "BB.h"  
...  // AA.h  
#include "include_files.h"  
class AA  
{  
public: ...  
};  // BB.h  
#include "include_files.h"  
class BB : public AA  
{  
public: ...  
}  

编译后就会报错C2504,未定义基类AA,msdn上的解释是这样的:
Missing include file. 未包含头文件
External base class not declared with extern. 外部类没有用ertern定义。
而这个错误就是因为头文件包含得不明确。
编译时,首先编译了AA.h,
因为AA.h中包含了include_files.h,所以又去编译了include_files.h
include_files.h里即包含AA.h又包含BB.h,所以继续编译
AA.h正在编译中,于是再去编译BB.h,而BB.h未编译,但它里面却用到了类AA,然而此时我们仍在编译AA.h的嵌套中,即AA.h未编译完,显然类AA还没有明确定义,所以才报了错。即如下一个过程。
所以以后不能把类定义的头文件随便扔在一块了,还是勤快些,在用到时才#include吧。。。

 

转载于:https://www.cnblogs.com/geekvc/p/6657331.html


http://www.ppmy.cn/news/281991.html

相关文章

【MySQL】初识数据库

数据库基础知识 一、什么是数据库二、mysql与mysqld三、服务器、数据库、表关系四、数据库的连接、创建与使用4.1 安装地址4.2 连接服务器4.3 数据库的基本使用4.4 数据逻辑存储 五、MySQL架构六、SQL分类七、存储引擎 一、什么是数据库 存储数据用文件就可以了,为…

HDU 2504

又见GCD Problem Description 有三个正整数a,b,c(0<a,b,c<10^6)&#xff0c;其中c不等于b。若a和c的最大公约数为b&#xff0c;现已知a和b&#xff0c;求满足条件的最小的c。 Input 第一行输入一个n&#xff0c;表示有n组测试数据&#xff0c;接下来的n行&#xff0c;每行…

思科AC无线控制器AIR-CT2504-K9添加黑名单

注&#xff1a;不同版本的控制权有些选项可能略微不同&#xff0c;但大同小异&#xff0c;本文章仅做参考 无线控制器&#xff1a;AIR-CT2504-K9 1.使用浏览器登录控制器的管理界面&#xff0c;输入用户名和密码进行登录。 2.点击右上角advanced&#xff0c;进入控制器高级配…

思科AC无线控制器AIR-CT2504-K9修改Wi-Fi密码

注&#xff1a;不同版本的控制权有些选项可能略微不同&#xff0c;但大同小异&#xff0c;本文章仅做参考 无线控制器&#xff1a;AIR-CT2504-K9 1.使用浏览器登录控制器的管理界面&#xff0c;输入用户名和密码进行登录。 2.点击右上角advanced 3.在管理界面的导航栏中选择…

思科无线控制器 2504 备份配置

http://blog.sina.com.cn/s/blog_4951b7d50102x435.html Try this from the via GUI of Try this from the via GUI of your wlc assuming that you have a TFTP server on your laptop and have logged in. Go to the ‘Commands’ tab and select ‘Upload file’ Select f…

HDU 2504 JAVA

Problem Description 有三个正整数a,b,c(0 import java.util.Scanner;public class Main{/**解题思路&#xff1a;*由于a和c的最大公约数是b&#xff0c;所以a xb&#xff0c;byb。现在相当于已知x&#xff0c;求y。*我们由上面可知x和y一定是互质的。只要枚举一下最小的与x互…

HDU2504

你说为啥每个题的坑我都会踩呢 惯性的以为c2*b就行了 其实不是 比如144和4 如果c等于8 那么最大公约数不是4 而是8 这就说明 要得到最小的满足题意的c就得进行判断吧 用gcd吧 #include<bits/stdc.h> using namespace std; int gcd(int a,int b) {return b?gcd(b,a%b):a…

C2504未定义基类

原因:在父类的.h文件中 包含了子类的.h文件 即 父类和子类互相包含了.