VS error c2504未定义基类

news/2024/12/22 13:20:48/

问题描述

error c2504未定义基类,编译错误,和#include头文件有关。
感谢

http://blog.csdn.net/qncj666/article/details/8562338

详细描述

(代码引自Cocos2d-x手游开发Mario)

Item.h
...
#include "ItemMushroom.h"
class Item:public CCSprite
{...public:static Item* create(CCDictionary* dict);...
}
Item.cpp
#include "Item.h"
...
Item* Item::create(CCDictionary* dict)
{const CCString* type = dict->valueForKey("type");if (type->m_sString == "mushroom"){return ItemMushroom::create(dict);}return NULL;
}
...

因为我在Item.cpp文件 函数static Item* create(CCDictionary* dict); 的实现中用到了ItemMushroom类的成员函数,所以在Item.h文件中 引用了ItemMushroom.h头文件。

然而我的ItemMushroom类是派生自Item

ItemMushroom.h
#include "Item.h"
class ItemMushroom:public Item
{
...
};

那么问题来了,在Item.h头文件中我包含了ItemMushroom.h,
在ItemMushroom.h头文件中又包含了Item.h,在包含的顺序上出现了闭合环状。

原因分析:

编译器首先编译Item.h,因为其包含ItemMushroom.h,引入ItemMushroom.编译,ItemMushroom继承自Item,Item尚未编译成功。此时VS2013 报错error 2504: Item 未定义基类。此错误是在编译Item.h头文件出错。

解决方法

头文件在包含顺序上不要成闭合环状,顺序结构最好应该是树。
Item.h 中删除#include "ItemMushroom.h"
Item.cpp 中加入#include "ItemMushroom.h"

Item.cpp
#include "Item.h"
#include "ItemMushroom.h"
...
Item* Item::create(CCDictionary* dict)
{const CCString* type = dict->valueForKey("type");if (type->m_sString == "mushroom"){return ItemMushroom::create(dict);}return NULL;
}
...

http://www.ppmy.cn/news/281980.html

相关文章

WLC-WLC升级(以2504为例)

1、WLC升级需要按照升级路径来操作,低版本到高版本的跨度太大,往往需要升级到中间版本,有时候还涉及到FUS。 2、我们升级,一般使用的笔记本上运行的TFTP/FTP server。 需要注意:笔记本防火墙的影响。 如下是一个升级的简单示例: 注意,笔记本防火墙因素。(Cisco Control…

Redux 笔记整理

Redux 核心概念:store、action、reducer store(斯道尔):仓库,存储了数据,管理者(一个项目只有一个仓库),管理 action 和 reduceraction:“专家”,只提想法不干活(动作)reducer(瑞丢色儿)&…

Kafka有几种消费者分区分配策略?

Range范围分配策略 Range范围分配策略是Kafka默认的分配策略,它可以确保每个消费者消费的分区数量是均衡的。 注意:Rangle范围分配策略是针对每个Topic的。 配置 配置消费者的partition.assignment.strategy为org.apache.kafka.clients.consumer.Ran…

MR 用两步计算 GI

第一步,光源发射很小的并带有能量的小包裹 ( 我们叫它光子 (photons)) 发射到场景中。我们 要追踪这些光子在场景中反弹的路线。其中一些光子会被物体吸收或被反弹到无限远的空间 里。当光子与一个物体相撞,它可以被反射,发射或吸收。当一个…

Java 异常处理和最佳实践(含案例分析)

概述 最近在代码 CR 的时候发现一些值得注意的问题,特别是在对 Java 异常处理的时候,比如有的同学对每个方法都进行 try-catch,在进行 IO 操作时忘记在 finally 块中关闭连接资源等等问题。回想自己对 java 的异常处理也不是特别清楚&#x…

华为交换机抓包

1.登录交换机,找一个合适的空闲端口,作为观察口(观察口的端口速率至少与镜像口持平)#observing-port 1 interface GigabitEthernet 0/0/6 (将G0/0/6作为观察口,编号为3) 全局下: 2.进入异常流量…

华为交换机堆叠配置

CE68系列: 完成交换机A堆叠配置 system-view sysname SwitchA stack stack member 1 priority 150 stack member 1 domain 10 quit commit 业务口加入堆叠组 interface stack-port 1/1 port member-group interface 40ge 1/0/1 to 1/0/2 y quit commit 配置后重…

华为交换机配置(一)

前置条件:交换机功能正常但前期使用情况不明,需要重置再进行使用。 准备条件: 物料准备:华为交换机配置PCconsole线USB转串口线电源线网线1根 软件准备:USB转串口驱动Xshell等远程仿真终端工具 配置步骤&#xff1a…