繁体   English   中英

错误 C2504 - 基类未定义

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM