我有一个相当简单的问题
这是我的firstcluster.h
#pragma once
#include "cluster.h"
class FirstCluster:public Cluster{
...
public:
...
};
cluster.h的代码:
#pragma once
// File: cluster.h
class Cluster {
protected:
...
public:
...
};
我收到了错误:
error C2504: 'Cluster' : base class undefined
有时我会收到此IntelliSense错误:
IntelliSense: incomplete type is not allowed ... Line 10 Column 27
但并不总是出现。
如您所见,包含cluster.h
,所有其他标头文件均受#pragma once
保护
我真的不知道这里会出现什么问题?
即使我用#pragma once
保护所有内容,圆形包含制作问题吗?
我正在使用Visual Studio 2010。
答案 0 :(得分:5)
由于循环包含,我得到了这个。
我在“include.h”中包含了所有标题,并将其包含在其他任何地方。
我设法通过在include.h中包含标准标题来避免循环包含。
答案 1 :(得分:2)
我遇到了完全相同的问题,添加了
#ifndef CLUSTER_H
#define CLUSTER_H
/* your code */
#endif
帮助解决了这个问题。 ifndef部分显然是包括重复,但我认为“定义”确实有帮助。
答案 2 :(得分:1)
此代码看起来很正常,因此: 如果cluster.h实际上定义了Cluster类,那么检查Cluster周围是否缺少命名空间(如果使用命名空间),'Cluster'与'cluster','cLuster'等中的大小写使用情况,也检查Cluster定义不是另一个类的本地。
希望这有帮助。
答案 3 :(得分:0)
由于循环包含而发生此错误,因此我们可以通过在父类底部添加子类的标题来解决此问题