MFC中类之间的访问问题!!

我在MFC下先定义一个类A,再在另一个文件定义一个B类,其中B类的函数用到了A作为参数,然后我在B中包含了A的头文件,编译结果报错了。。。A.h中classA{}A.cp... 我在MFC下先定义一个类A,再在另一个文件定义一个B类,其中B类的函数用到了A作为参数,然后我在B中包含了A的头文件,编译结果报错了。。。
A.h中
class A{}

A.cpp中
(空的,做个样子)

B.h中
#include "A.h"
class B
{
public:
fun(A* a); //重点是这里访问了A类
}

B.cpp中
(随便定义了下函数)

差不多就这样,然后编译出错,说 语法错误:定义的标识符“A”
但是如果我在B.h中包含了A.h后再声明一下A,像这样class A;这样编译就通过了,这是怎么回事???包含了头文件还需要再声明这个类?
展开
 我来答
bhtzu
2013-04-01 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4160万
展开全部
B.h中
#include "A.h"
这样是没问题的,你检查一下其它错误吧,再定义class A;是不对的,这样实际使用中会屏蔽(也不识别)应该使用的A。
追问
我第二次就是声明了下,没加{ },不算是定义吧。。
追答
恩,我表达有误,同一个类,第二次声明会覆盖原来的(如果第一次声明有效,并且增加了作用域),因为你原来的声明必然有类的成员声明,这个再次声明会产生问题。
另外,如果你第二次声明成功,那么说明,在相同作用域下,原来的声明是无效的,检查别的问题吧,是不是a.h有别的问题,还是b.h的include存在宏定义的编译分支等。
挨踢老李
2013-04-01 · TA获得超过876个赞
知道小有建树答主
回答量:1176
采纳率:50%
帮助的人:944万
展开全部
B.h中
#include "A.h"
B.cpp中
#include "B.h"
这样,在我电脑上测试没有问题
追问
你建的是什么工程,MFC还是win32控制台。我在win32控制台下弄就好好的,就是不知道MFC怎么会这样。
追答
是MFC,正常,只是提示没有添加预编译头,在A.cpp和B.cpp中添加#include "stdafx.h"就没什么错了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
FanyongYin
2013-04-01 · TA获得超过1054个赞
知道小有建树答主
回答量:1298
采纳率:100%
帮助的人:1007万
展开全部
按道理说如果你真的是单向使用的class,确实不应该的;

你把A.h故意写错,保证编译会失败的那种,然后在没有"class A;"的语句下再次编译B.CPP看看是否有编译错误?

如果没有错,说明A.h没有被编译包含进来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式