[英]Error C2504 - Base class undefined
我有一个相当简单的问题
这是我的第一个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。
由于循环包含,我得到了这个。
我将所有标题都包含在“include.h”中,并将其包含在其他任何地方。
我只是通过在 include.h 中包含标准头文件来避免循环包含。
我遇到了完全相同的问题,添加
#ifndef CLUSTER_H
#define CLUSTER_H
/* your code */
#endif
帮助解决了问题。 ifndef 部分显然用于包含重复,但我认为“定义”确实有帮助。
这段代码看起来很正常,所以:如果 cluster.h 实际上定义了 Cluster 类,则检查 Cluster 周围是否缺少命名空间(如果您使用命名空间)、“Cluster”与“cluster”、“cLuster”等中的大写小写用法等.,还要检查 Cluster 定义是否不是另一个类的本地定义。
希望这可以帮助。
由于循环包含而发生此错误,因此我们可以通过在父类底部添加子类的标题来处理此问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.