CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

在类A的成员函数functionsA函数里调用类B的成员函数functionsB执行一些操作,采用什么方法较为合适?

楼主winterss(wendy)2006-03-03 15:40:25 在 VC/MFC / 基础类 提问

有两个类A,B  
  class   A  
  {  
  void   functionsA(参数xxx)  
  {  
    //   调用B对象的functionsB  
  }  
  };  
   
  class   B  
  {  
  void   functionsB()  
  {  
  }  
  }  
  在类A的成员函数functionsA函数里调用类B的成员函数functionsB执行一些操作,采用什么方法较为合适?  
   
  我想到的两个方法:1.将B的对象的引用作为参数XXX传入。但是在程序里如何表达呢?请帮忙写一下  
   
           2.将A声明为B的友员,直接调用B的成员函数,但是也没成功,应该怎么做呢? 问题点数:30、回复次数:10Top

1 楼handsomerun(毛毛)回复于 2006-03-03 15:47:34 得分 5

这个东西和友元不友元没关系,和是不是做参数也没关系,因为你得要有一个类b的对象咯  
   
  两个办法,一是把类A中定义一个类B的成员,然后在FA中调用类B的FB函数  
   
  或者把FB定义成类B的static成员函数  
  然后在类A中,通过  
  B::FB来调用这个函数  
  不过这样就失去了封装的意思了,FB就类似一个全局函数那样在用了Top

2 楼striking(庸人自扰)回复于 2006-03-03 15:47:42 得分 20

将B的对象作为A的成员.  
  class   A  
  {  
  void   functionsA(参数xxx)  
  {  
    //   调用B对象的functionsB  
  }  
      B   b;//////  
  };  
  将B的对象的引用作为参数XXX传入。但是在程序里如何表达呢?请帮忙写一下  
  class   A  
  {  
  void   functionsA(   B   &b   )  
  {  
    //   调用B对象的functionsB  
  }  
  };  
   
  Top

3 楼nodefault(永不言败)回复于 2006-03-03 15:51:40 得分 5

#   include   B.h  
   
  class   A  
  {  
   
   
  void   functionsA()  
  {  
                              B   b;  
   
            b.functionsB  
  }  
   
  };  
  Top

4 楼winterss(wendy)回复于 2006-03-03 16:00:36 得分 0

我采用的是这种方法:  
  #include   "B.h"  
  class   A  
  {  
  void   functionsA(   B   &b   )  
  {  
    b.functionB  
  }  
  };  
  因为在主线程里,希望只有一个B的对象,这里在调用functionA时,做那个B的对象的引用。但是compile时,程序报错呢?  
  syntax   error:identifier   'B'  
  funtionsA:overloaded   member   funtion'int(class   B&')   not   found   in   'A'Top

5 楼striking(庸人自扰)回复于 2006-03-03 16:03:19 得分 0

看看A的头文件怎么定义的void   functionsA(   B   &b   )  
  Top

6 楼winterss(wendy)回复于 2006-03-03 16:10:45 得分 0

头文件那边是:void   functionA(B   &)。Top

7 楼striking(庸人自扰)回复于 2006-03-03 16:14:08 得分 0

可能你的实现写错了.Top

8 楼winterss(wendy)回复于 2006-03-03 16:24:55 得分 0

A.h文件里是:  
  #include   "B.h"  
  void   functionA(const   &);  
   
  A.cpp文件里是:  
  void   A::functionA(const   B   &   b)      
  {  
  //调用   b.functionB()  
  }  
  现在只有最后一个错误,到底怎么哪错了呢?  
  functionA:overloaded   member   function   'void   (const   class   B   &)'   not   found   in   'A'Top

9 楼striking(庸人自扰)回复于 2006-03-03 16:29:25 得分 0

A.h文件里是:  
  #include   "B.h"  
  void   functionA(const   &);  
   
  ->  
   
  void   functionA(const   B   &);//少了BTop

10 楼winterss(wendy)回复于 2006-03-03 16:34:20 得分 0

加了后,又多出现了两个问题  
  针对:void   functionA(const   B   &);  
   
  syntax   error   :   missing','befor'&'  
  syntax   error:'&'Top

相关问题

  • 求函数f(a,b)=2*a*a+b*b的100个最小函数值
  • bzero( )函数的 ‘b’代表什么?
  • A函数调用函数B,在函数B中能不能获得传入参数的名称...
  • 有没有函数可以做以下计算:两个数字,530,10,int a,b;b=502;a=10;b=b???a;最后b的值为51,请问该函数是什么???
  • 如何得到asp中可以var=Function(a,b)这样的函数。
  • 有无将TColor直接分解成R、G、B的函数?
  • 查找字符串A是否在串B中用哪个函数
  • A(int a = 1, int b = 2) 是不是缺省构造函数?
  • C语言中有 set_pixel(a,b,c)这个函数吗?
  • int[,] a ,创建a的副本b,有没有现成的函数?

关键词

  • 函数
  • 文件
  • functionsa
  • functionsb
  • 调用
  • functiona
  • 成员
  • 对象
  • 类
  • 方法

得分解答快速导航

  • 帖主:winterss
  • handsomerun
  • striking
  • nodefault

相关链接

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

广告也精彩

反馈

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