紧急求助,关于vc编译器提示问题
我写了一个程序:
在A类定义了B类的一个对象m,
当在A类的定义如下时:
#include “A.h”
class A;
时
编译器提示:“m” uses undefine class B
当在A类的定义如下时
#include “A.h”时,
编译器提示:
miss ';' before m;
m miss storage class or type;
请问高手这种现象可能是什么原因造成的?紧急
问题点数:50、回复次数:15Top
1 楼gohappy_1999(碧水蓝天)回复于 2005-08-25 21:39:21 得分 50
超前引用只能用指针,用指针就不会了。Top
2 楼wxwxiaofeng(郁闷中.............)回复于 2005-08-25 21:43:37 得分 0
是由于没有定义指针引起的嘛?Top
3 楼wxwxiaofeng(郁闷中.............)回复于 2005-08-25 21:48:53 得分 0
可是我看过以前的一段程序就是这样定义,可是也没有问题啊。Top
4 楼wxwxiaofeng(郁闷中.............)回复于 2005-08-25 21:49:13 得分 0
什么叫超前引用啊?Top
5 楼gohappy_1999(碧水蓝天)回复于 2005-08-25 21:50:23 得分 0
你的题目描述混乱,再清楚地说一遍。
我才你是这样了。
//a.h
class B;
class A
{
B m;//这里改为B *m;
}Top
6 楼wxwxiaofeng(郁闷中.............)回复于 2005-08-25 21:57:55 得分 0
差不多吧
//a.h
#include "b.h"
class B;
class A
{
B m;//这里改为B *m;
}
Top
7 楼wxwxiaofeng(郁闷中.............)回复于 2005-08-25 22:17:10 得分 0
我刚看了超前引用的介绍,如下
#ifndef __MYVIEW_H__
#define __MYVIEW_H__
//这是view类的头函数
#include "MyDialog.h"
class CMyDialog;
class CMyView::public CView
{
protected:
CMyDialog * pDlg;
//这里是其他定义
};
#endif
#ifndef __MYDIALOG_H__
#define __MYDIALOG_H__
//这是对话框类的定义
#include "MyView.h"
class CMyView;
class CMyDialog::public CDialog
{
protected:
CMyView * pView;
//其他定义
};
#endif
可是我在另外一个类中并没有定义这个类的对象啊?难道也会产生超前引用嘛?
Top
8 楼gohappy_1999(碧水蓝天)回复于 2005-08-25 22:19:15 得分 0
如果#include "b.h"的话
干嘛还CLASS B;呢?
你去掉看看,这样的话应该没问题的啊
//a.h
#include "b.h"
class A
{
B m;
}
Top
9 楼wxwxiaofeng(郁闷中.............)回复于 2005-08-25 22:20:44 得分 0
我去掉试了一下,
还是会报错啊。提示为:
miss ';' before m;
m miss storage class or type;Top
10 楼gohappy_1999(碧水蓝天)回复于 2005-08-25 22:24:28 得分 0
你把A和B头文件贴一下Top
11 楼wxwxiaofeng(郁闷中.............)回复于 2005-08-25 22:30:24 得分 0
//a.h
#include "b.h"
class B;
class A
{
B m;
}
//b.h
class B
{
}Top
12 楼gohappy_1999(碧水蓝天)回复于 2005-08-25 22:34:02 得分 0
应该没问题啊。
你把B m;改成B *m,还有问题吗?Top
13 楼wxwxiaofeng(郁闷中.............)回复于 2005-08-25 22:34:11 得分 0
我没有在类B中定义A的对象,所有就没有加#include “a.h”和class A;Top
14 楼wxwxiaofeng(郁闷中.............)回复于 2005-08-25 22:36:16 得分 0
必须把B m修改为B *m嘛?
我没有试过,明天上班去试试。
还有没有其他的可能性啊?兄弟Top
15 楼gohappy_1999(碧水蓝天)回复于 2005-08-25 22:43:33 得分 0
我觉得这两种都可以。
//a.h
class B;
class A
{
B *m;
}
//a.cpp
#include "b.h"
//b.h
class B
{
}
或者
//a.h
#include "b.h"
class A
{
B m;
}
//b.h
class B
{
}
Top




