未定义基类的问题

本文介绍了一种常见的C++编程问题——头文件之间的循环依赖,并提供了有效的解决方案。问题出现在一个类重载了基类的虚函数并包含另一个类的头文件,而后者又包含了该类的头文件。文章详细解释了如何通过前置声明和调整包含顺序来避免这种循环依赖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在写代码的时候 发现遇到一个 未定义基类的问题,郁闷了好久,通过查资料发现原来是

在OgreApp1.h的头文件中 include 了自己写的一个控制器类 #include “UnitManager.h”,

而只有UnitManager这个类重载BaseApplication的几个虚函数才能达到控制器的作用,而且OgreApp1这个类也是继承了BaseApplication这个类,所以我又在UnitManager这个类中继承了OgreApp1,因为必须有 #include "OgreApp1.h"。从而导致了

编译父类头文件时,当编译#include"UnitManager.h"时,展开子类编译,但在子类当编译到#include"OgreApp1.h"时,又回到父类头文件,此是已经过父类文件的“#pragma once”这句话,
所以当编译父类文件时,不能进入父类的定义语句,造成父类未定义


解决方案:

1.使用前置声明。。在OgreApp1.h中先添加 class UnitManager;

2.同时在OgreApp1.cpp中#include "UnitManager.h"


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值