【发布时间】:2010-10-27 10:23:28
【问题描述】:
以下代码:
foo.h
#include "bar.h"
class foo{
public:
enum my_enum_type { ONE, TWO, THREE };
foo();
~foo() {}
};
foo.cpp
foo::foo()
{
int i = bar::MY_DEFINE;
}
bar.h
#include "foo.h"
class bar{
public:
static const int MY_DEFINE = 10;
foo::my_enum_type var;
bar() {};
~bar() {};
};
使 g++ 编译器抱怨 my_enum_type “没有命名类型”。 为什么 ? 所有标头都有多个包含定义(为清楚起见,此处未显示)。
谢谢
【问题讨论】:
-
这应该可以正常工作...
-
你如何使用这些课程?你这里还没有源文件。你能分享一下你是如何使用这些类的吗?
-
谢谢大家,你们让我意识到问题不在于语法,而在于我如何使用这些类。 foo.h 中有一个#include "bar.h",我用前向声明替换它,现在一切都很好!
-
@Rémy:所以,您提供的代码不是您遇到问题的代码。道德:为了得到有用的答案,呈现实际的代码。 :-) 干杯,
-
现在你有了循环包含:foo.h 包含 bar.h,bar.h 包含 foo.h。你不需要第一个。请给出一个可以实际重现您所看到的错误的小示例。