错误C2504 - 基类未定义

时间:2014-01-29 15:18:44

标签: c++ visual-studio-2010 visual-studio

我有一个相当简单的问题

这是我的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。

4 个答案:

答案 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)

由于循环包含而发生此错误,因此我们可以通过在父类底部添加子类的标题来解决此问题