【问题标题】:How to call a function in all inheritant classes? [closed]如何在所有继承类中调用函数? [关闭]
【发布时间】:2024-01-20 20:11:01
【问题描述】:

例如,假设我有这个类:

class base{
public:
    update();
};

我有很多继承自这个的类:

class A : public base 
{
    //<...>
}

class B : public base
{
    //<...>
}

所以我想知道 - 我能否以某种方式在所有类中调用函数 base::update(); 而无需将其全部写出 (A::update(); B::update();) 等。 就像在从基类继承它的所有类中调用一个会执行update(); 的函数一样。

谢谢!

编辑: 我正在做的是将我的实体系统更改为基于组件的系统,我想知道是否有更简单的方法来调用(比如说)update();在所有成员中继承的功能。而不是做enemy01.update();敌人02.update();等只写下一个更新();这适用于所有拥有它(继承它)的类,有点像给他们所有人调用函数的消息。

【问题讨论】:

  • 我认为你应该在问这个之前尝试编写一个真正的程序。在遇到这个问题之前,您似乎会遇到其他问题。你误解了其他一些事情。
  • 这是一个instance成员函数,调用的时候需要一个实例。
  • 我认为您应该说明您要解决的高级问题。

标签: c++ class inheritance virtual-functions


【解决方案1】:

virtual function?

class base{
public:
    virtual void update();
};

然后这个函数:

void update_class(base &b) {
    return b.update();
}

您可以在任何继承 base 的类上调用 update_class

【讨论】:

  • 问题是我仍然必须把它全部写出来,就像每个类我必须单独调用函数一样,所以它会解决问题,它只是改变它,什么我想做的是调用一个函数并让它强制从基类继承的每个类都执行 update();.
  • @Borisas 你最好学习各种设计模式,例如:en.wikipedia.org/wiki/Observer_pattern 这就是为什么我在其他评论中问“你想要解决的高级问题是什么?”
  • @PaulMcKenzie 谢谢,我想这就是我想要的。