C++ 包含两个派生自同一基类的类

标签 c++ inheritance header

我有一个基类 Base
从它派生的两个类:DerivedADerivedB。在这两个类的 header 中,我都包含了 Base.h
然后,在我定义 mainsource.cpp 中,如果我只包含 DerivedA.h,它工作正常。如果我只包含 DerivedB.h,它也可以正常工作。问题是我不能同时包含两者。
每当我同时包含两者时,编译器都会生成一堆错误,例如

  • '.debit' 的左边必须有类/结构/union
  • 'getBalance':不是'CheckingAccount'的成员

我想问题是当我包含两个 header 时,Base.h 被包含了两次。我应该如何包含这些 header ?

最佳答案

如果问题只是头文件而不是 deadly diamond of death 的情况,您可以在头文件中使用 #pragma once,这将确保它在构建过程中只链接一次。

或者,您可以将头文件包装成这样:

#ifndef HEADER_H_
#define HEADER_H_

// The content of the header file goes here...

#endif

通过使用预处理器 #ifXXXX 语句,您可以告诉编译器仅在宏尚未预定义时才包含该文件。

关于C++ 包含两个派生自同一基类的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19286614/

相关文章:

C++编译错误,构造函数没有返回类型...但我没有指定一个

java - Grails 3.3.2 域类继承问题

c++ - 如何不使用虚拟继承?

html - 定位导航栏

c++ - 我怎样才能有可选的默认构造函数?

c++ - 无法在动态链接库 msvcrt.dll 中找到过程入口点 _ftol2

c++在file.h和file.cpp中写回调函数

c++ - dynamic_cast 在三级继承的情况下导致分段冲突

c++ - 从 JFIF/EXIF (JPEG) header 获取实际图像分辨率?

php - 是否可以在 .js 页面上运行 PHP?