因此可以说我有一个名为Foo
的类和另一个名为Bar
。 Bar
包含Foo
的实例,我在Foo
中有一个函数,它将Bar
作为参数。然而,当我在#include "Bar.h"
以Foo
允许Foo
看到Bar
我上线这个错误Bar
上引用:#include彼此的两个类的错误
error: ISO C++ forbids declaration of 'Foo' with no type
我猜这是因为这两个阶级的互相依赖编译。有什么办法可以解决这个问题吗?
编辑:这两个类都有头文件,其他类在#ifndef
声明中引用。
如果你必须包括其他类,你应该过度考虑你的程序设计。这里不对劲。 – 2012-03-12 06:24:16
考虑预处理器的输出结果。弄清楚它应该是什么样子,这是告诉哪些头文件不需要包含另一头文件的巨大举措。 – hvd 2012-03-12 06:26:14
如果一个类体尚不可见,那么你需要转发声明它。但是,只能使用前向声明才能使用该类的对象。你需要让类体可见才能拥有它的对象。 – iammilind 2012-03-12 06:26:42