CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

紧急求助,关于vc编译器提示问题

楼主wxwxiaofeng(郁闷中.............)2005-08-25 21:36:13 在 VC/MFC / 基础类 提问

我写了一个程序:  
  在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

相关问题

  • 紧急求助,关于vc编译器提示问题
  • 关于VC++6.0编译器运算符“.”“->”“::”提示列表的问题
  • vc++编译器的问题
  • VC编译器的问题
  • VC++6.0编译器问题.......
  • vc编译器死机
  • VC编译器的提问
  • 为什么我的VC编译器,突然 不能给我带出成员函数提示?
  • VC的编译器是哪个啊?
  • 关于VC编译器的问题~~~

关键词

  • 编译器
  • 指针
  • hclass
  • 定义
  • 编译器提示
  • 超前引用
  • mydialog
  • myview
  • cmyview
  • cmydialog

得分解答快速导航

  • 帖主:wxwxiaofeng
  • gohappy_1999

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo