| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1000 人关注过本帖
标题:第一次来,问一个类在头文件中声明的问题
只看楼主 加入收藏
xyc294753618
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-7-29
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
第一次来,问一个类在头文件中声明的问题
久闻此论坛nb,小弟问个初级问题

在aa.h中我声明  class AA;

在aa.cpp 中我 class AA { .....类的变量,函数的声明以及定义}

在 bb.cpp 中我#include "aa.h"  但我创建 AA test = new AA(); 时说AA 没有定义, 这是为什么, 我在.h中声明了,并在 aa.cpp 中定义了啊
搜索更多相关主题的帖子: include 声明 
2012-07-29 07:36
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:3 
aa.cpp中include "aa.h"了么?

从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2012-07-29 09:50
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:3 
顶LS

梅尚程荀
马谭杨奚







                                                       
2012-07-29 09:56
liudw2
Rank: 4
等 级:业余侠客
帖 子:85
专家分:248
注 册:2011-7-31
收藏
得分:3 
加顶,没包含头文件怎么能定义类啊。。。
2012-07-29 11:43
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:3 
可能就是 2楼 指出的问题。
不过习惯上,类的定义也放在 .h 里。静态成员呀和可以内联的成员函数也一并在 .h 里实现了。然后其它的成员函数在 .cpp 里实现。(和 c 的习惯差不多,就是成员函数也在 .h 里声明好,然后 .cpp 实现)
2012-07-29 11:54
yupeisx
Rank: 1
等 级:新手上路
帖 子:20
专家分:8
注 册:2012-3-7
收藏
得分:3 
这要看你创建AA类的方式,要是在工程中右击,NEW CLASS 的就不存在没有包含的问题,如果是手动的就有可能就是二楼说的问题。
2012-07-30 11:07
小小菜鸟蛋
Rank: 1
等 级:新手上路
帖 子:8
专家分:2
注 册:2012-8-4
收藏
得分:3 
2L正解~~
2012-08-05 12:11
lyp880924
Rank: 1
等 级:新手上路
威 望:1
帖 子:10
专家分:6
注 册:2012-7-7
收藏
得分:3 
以下是引用小小菜鸟蛋在2012-8-5 12:11:53的发言:

2L正解
上一层声明,下一层就得包含进去了 又学到新东西了
2012-08-05 12:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:3 
以下是引用xyc294753618在2012-7-29 07:36:42的发言:

久闻此论坛nb,小弟问个初级问题
 
在aa.h中我声明  class AA;
 
在aa.cpp 中我 class AA { .....类的变量,函数的声明以及定义}
 
在 bb.cpp 中我#include "aa.h"  但我创建 AA test = new AA(); 时说AA 没有定义, 这是为什么, 我在.h中声明了,并在 aa.cpp 中定义了啊

当然是没有定义啦。你在aa.h中的class AA只是声明了存在这么一个类,但没有定义实现代码,这个代码在aa.cpp中,但bb.cpp与aa.cpp是两个不同的并行模块,两者没有关联,你只#include "aa.h",也不过是宣布将要使用class AA,但编译器仍然找不到这个类的实现代码,它不会跨模块到aa.cpp中去找。

归根结底,你这个类的使用法是错的。正确的做法,是aa.cpp就是aa.h(原先的那个删掉,把aa.cpp改名为aa.h),然后在bb.cpp中#include "aa.h"。#include的作用,是把引用的文件内联到本模块,亦即把整个aa.h的内容嵌入到bb.cpp中。你用这个本质,看一下原先的做法:bb.cpp中#include "aa.h"之后,只不过是多了一个class AA;的声明而已,仍然没有定义,所以编译器就报那个错误信息咯。

授人以渔,不授人以鱼。
2012-08-05 12:59
快速回复:第一次来,问一个类在头文件中声明的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026803 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved