【发布时间】:2018-11-08 08:35:10
【问题描述】:
我的问题是关于 C++ 中的包含。想象一下这 3 个 .h 文件
// A.h
#include "B.h"
class A {
B b;
}
// B.h
#include "C.h"
class B {
C c;
}
// C.h
class C {
}
这里的问题是,A.h 需要访问 B.h,而不是 C.h。
在这种情况下,A.h 可以通过 B.h 访问 C.h,因此这是不必要的包含。最近我经常遇到这种情况,所以我想知道如何避免这种情况。
【问题讨论】:
-
是的,A.h 需要 C.h,因为它使用 B,它使用 C。你在问什么?
-
使用 include 保护 所以顺序不重要。
-
@DeadlyCow "'A' 从不实例化 'C' 类型的变量" 它确实通过实例化 @987654324 来实例化 C @.
-
不必要的包含示例是
#include C.hinA.h。 -
经验法则是:包括您使用的内容。 A 依赖于 B,所以 A 应该包含 B。B 依赖于 C,所以 B 应该包含 C。还要使用标头保护,或
#pragma once。
标签: c++ include header-files