【发布时间】:2010-09-20 04:15:56
【问题描述】:
我遇到了依赖问题。我有两个课程:Graphic 和 Image。每个都有自己的 .cpp 和 .h 文件。我将它们声明如下:
Graphic.h:
#include "Image.h"
class Image;
class Graphic {
...
};
Image.h:
#include "Graphic.h"
class Graphic;
class Image : public Graphic {
...
};
当我尝试编译时,我收到以下错误:
Image.h:12:错误:“{”标记之前的预期类名如果我从Image.h 中删除Graphic 的前向声明,则会收到以下错误:
【问题讨论】:
-
就目前而言,这应该可以工作。你用的是什么编译器? Image.h 和 Graphic.h 是否都在文件系统的同一个文件夹中?你的编译器知道在哪里寻找它们吗?
-
请不要把问题编辑得这么糟糕:它会使所有这些有价值的答案无效。而是自己提供一个答案,以保持时间线完整。
-
我无法提供答案,因为我不知道答案是什么 - 相反,我更改了问题,以便更清楚我想问什么(建议的更改没有帮助) .
-
我通过检查每个相关源文件并询问自己需要哪些包含和声明以及不需要哪些内容来修复它,然后删除不需要的内容。然后它编译得很好。不确定问题是什么,因为我无法重现该缺陷(它与单独的文件有关)。
-
(回滚到第一版)
标签: c++ inheritance organization