【发布时间】:2011-09-16 15:06:38
【问题描述】:
我偶尔会遇到两个问题。一个是编译时断言,另一个是以奇怪的方式包含在多个位置的头文件(这不是我的代码,所以我不能修复它不以奇怪的方式包含它。即使我尝试过, 因为它是深深嵌入的,所以需要花费太多小时/天),例如:
class Foo
{
public:
#include "VariableDeclarations.h" // Some file that has all the variables that need to be declared
// which is also included by several other classes in the same way
};
上面的代码是我目前正在处理的简化。当然,类 Foo 也在做其他事情。
现在,如果我在这种情况下在头文件中添加另一个变量声明,并且文件Class Foo 所在的文件不知道类型,我会得到一个编译错误。为了解决这个问题,我包含了必要的标题。问题是,编译器告诉我的只是“未声明的标识符”,文件名显示为VariableDeclarations.h。我想知道哪个文件包含声明,因此不知道我刚刚添加的类型。
编译时断言也会发生类似的情况。我不知道是哪一行/文件导致了错误。它只是给了我错误(例如,在 Eigen 数学库中,我经常遇到这种情况)。
【问题讨论】:
-
为什么不直接从包含变量的类继承?
-
@DeadMG:就像我说的那样,该代码不是我编写的,并且标头正在其他地方使用并用于各种不同的宏,即嵌入太深。如果我没有在标题中包含类型,那么在其他地方使用标题的类不知道类型。我可以将声明放在每个必须了解它的类中,但这可能就是首先使用它的原因,以使过程自动化。假设我无法更改代码(我给出了一个非常简化的版本,说明实际发生了什么以及为什么它们包含这样的标题)
标签: c++ compiler-errors