游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2208|回复: 5

如何处理这样的虚函数?诚恳求教

[复制链接]

3

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2004-7-11 17:40:00 | 显示全部楼层 |阅读模式
我有一个A类,里面有一个Simulate函数要根据不同的情况处理对成员变量进行不同的处理,由于对Simulate的调用很频繁,所以我想使用一系列A的派生类来处理,这样A中的Simulate虚函数就可以在各种派生类中进行不同的处理。

我应该如何处理那,A类中可以包括这样的派生类吗?因为要调用A类的成员变量(它们为protected继承)

如class A:
  {
    ...
   protected:
    virtual void Simulate() = 0;
   protected:
     A中成员变量;
   private:
      A* iTest;
  }

  class B: public A
  {
    protected:
      void Simulate();
   }
   B::Simulate()
   {
     调用A的成员函数;
   }

   最后我们的iTest可以是任意从A派生的类,如B类,这样做可以吗?
   如果不行,有什么方法可以更好的解决这个问题,前提是A类必须有自己独立的对象,它有很多处理要做。我预想的派生类只是负责Simulate()的各种处理

   诚恳求教!

0

主题

30

帖子

39

积分

注册会员

Rank: 2

积分
39
发表于 2004-7-11 22:20:00 | 显示全部楼层

Re:如何处理这样的虚函数?诚恳求教

实事上就是函数重载,A类为基类,把Simulate() 定义为纯虚函数。完全可行。

5

主题

27

帖子

27

积分

注册会员

Rank: 2

积分
27
发表于 2004-7-12 19:28:00 | 显示全部楼层

Re: Re:如何处理这样的虚函数?诚恳求教

说来话长啊。。

但是,吐血推荐《 Inside C++ Object Model》 中文版。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2004-7-12 19:44:00 | 显示全部楼层

Re:如何处理这样的虚函数?诚恳求教

既然A要有独立的对象,就别和Simulate放在一起弄混淆了。
最好把需要有Simulate的部分单独处理作为一个基类,然后另Simulate为纯虚。

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-7-13 08:51:00 | 显示全部楼层

Re:如何处理这样的虚函数?诚恳求教

又见到有人把多态和重载混为一谈。。。

4

主题

38

帖子

38

积分

注册会员

Rank: 2

积分
38
发表于 2004-7-14 17:28:00 | 显示全部楼层

Re:如何处理这样的虚函数?诚恳求教

现在a已经是一个抽象类了 它不能有自己的对象了 建议你还是在单独设计一个类 已供接口专用 在别的类中用到Simulate() 时 在重载好一点
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-7-3 17:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表