CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

抽象基类函数调用派生类函数

楼主seril(ser)2003-11-02 17:54:47 在 C/C++ / C++ 语言 提问

class   a  
  {  
        public:  
        virtual   void   run();  
        void   time();  
  };  
  a类定义了run()和time()  
   
  void   a::time()  
  {  
      void   run();  
  }  
   
  class   b:public   a  
  {  
  public:  
        void   run();  
  };  
  提示tim()函数没找到run()函数  
  为什么? 问题点数:100、回复次数:8Top

1 楼jeckyz(深圳)回复于 2003-11-02 18:08:47 得分 10

你是怎么调用的?是这样用吗?  
   
  a*   a1   =   new   b(   );  
  a1.time(   );  
   
  原格上说   class   b   应该这样:  
   
  class   b   :   public   a  
  {  
  public:  
          using   a::time(   );  
          virtual   void   run(   );  
  };  
   
  希望你用的编译器支持   using   引用   :)Top

2 楼maoloverme1(峁峁)回复于 2003-11-02 18:11:45 得分 0

此时需对run函数重写,否则就要删除b类中的void   run()Top

3 楼yizhili(梨子)回复于 2003-11-02 18:21:49 得分 40

拜托,time里的是run的申明,用得着吗?  
   
  #include   <iostream>  
  using   namespace   std;  
   
  class   a  
  {  
  public:  
  virtual   void   run(){cout<<"a::run"<<endl;}  
  void   time();  
  };  
   
  void   a::time()  
  {  
  void   run();  
  run();  
  }  
   
  class   b:public   a  
  {  
  public:  
  void   run(){cout<<"b::run"<<endl;}  
  };  
   
  void   run()  
  {  
  cout<<"::run()"<<endl;  
  }  
   
  void   main(void)  
  {  
  a   *   acls   =   new   b;  
  acls->run();  
  acls->time();  
  }  
   
  输出:  
  b::run  
  ::run()  
   
  看出来了没?  
  a::time中申明的是全局的run,去掉就对了Top

4 楼seril(ser)回复于 2003-11-02 18:49:34 得分 0

a类的run()函数不定义行吗?Top

5 楼seril(ser)回复于 2003-11-02 19:08:28 得分 0

大哥写错了,  
  改过来还是不行  
  帮帮忙  
  Top

6 楼seril(ser)回复于 2003-11-02 20:13:54 得分 0

time()函数是一个全局函数  
  Top

7 楼plainsong(短歌)()回复于 2003-11-02 20:49:15 得分 10

调用时多了一个void,函数调用变成了函数声明。去掉就行了。Top

8 楼qkc(sdf)回复于 2003-11-02 21:42:56 得分 40

回复人:   seril(ser)   (   )   信誉:100     2003-11-02   20:13:00     得分:0    
    time()函数是一个全局函数  
   
  答:  
            time应该是基类或是派生类的成员函数,否则没办法调用run()啊因为是虚函数,它不知道要调哪一个run()Top

相关问题

  • 菜鸟求教关于派生类调用父类函数
  • 函数调用
  • 函数调用
  • 调用函数
  • 函数调用
  • 函数调用
  • 函数调用?
  • 请教,如何在MainFram的菜单响应中,调用派生CVIEW的函数??
  • 当派生类调用基类函数的问题,代码如下
  • 在派生类的构造函数后面可以调用基类的构造函数吗

关键词

  • 函数
  • virtual
  • 调用
  • run
  • 类
  • time

得分解答快速导航

  • 帖主:seril
  • jeckyz
  • yizhili
  • plainsong
  • qkc

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

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