c++ - OOP C++ - 错误,因为 A.h 包含 B.h,B.h 又包含 A.h

标签 c++ oop header include

我正在学习 OOP 并且有疑问。假设我有一个包含 ClassB.h 的文件 ClassA.h,并且在某些时候我的 ClassB.h 需要包含 ClassA .h

这会产生一个错误,我想我明白为什么会发生这种情况,因为我得到了一个无限包含循环。但是在这种情况下该怎么办?有没有办法解决这个错误?还是我应该重新考虑我的类(class)以避免它?这是否意味着我的类(class)组织设计不佳?如果是这样,安排我的“类图”并避免这种情况的方法是什么?

我只想知道在这种情况下最好的做法是什么。另外,为什么“#pragma once”指令不能解决这个问题?提前致谢。

最佳答案

您也可以通过使用前向声明来解决这个问题。如果您不创建包含在 header 中的类的实际对象或不从它继承,比如您只需要 header 中的它们的指针,您就可以这样做。

例子:

ClassA.h
class ClassB;
//rest of the codes here

ClassB.h
class ClassA;
//rest of the codes here

ClassA.cpp
#include ClassA.h
#include ClassB.h

ClassB.cpp
#include ClassB.h
#inlcude ClassA.h

关于c++ - OOP C++ - 错误,因为 A.h 包含 B.h,B.h 又包含 A.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14887042/

相关文章:

c++ - 如何在 Python 中复制证书身份验证 (Mumble (c/c++))?

c++ - 在 C++ 中将 token 加载到 map 容器中

javascript - 创建一个类,从另一个扩展并调用父方法

header - 访问 JAX-WS 自定义处理程序中的安全 header

css - 如何在 CSS 中添加多个图像?

node.js - Nodejs 使用请求在 header 中发送数据

c++ - 从控制台应用程序启动窗口应用程序?

c++ - 在 C++ 中初始化 char 缓冲区

java - 将 float 传递到仅接受 int 的构造函数 - 无法修改构造函数

c# - 从抽象集合中生成抽象集合