首页 > 解决方案 > 有没有办法在 C++ 中调用基类函数的所有子函数?

问题描述

我的应用程序中有很多场景,它们都包含相同的函数,例如 Update() Render() Initialise()。我刚才做的方式是声明所有场景并单独调用所有函数。有没有办法让这些场景派生自基类,我可以在基类上调用 Update() ,然后调用从此类派生的所有更新函数?

干杯。

标签: c++performance

解决方案


通过推送到容器来将子对象组合在一起,以便可以像这样集体调用派生的成员函数:

class base {
public: virtual void Update() = 0;
};

class A: public base {
public:  void Update() {}
};

class B : public base {
public:  void Update() {}
};

int main()
{
    vector<unique_ptr<base>> group;
    group.push_back(make_unique<base>(A()));
    group.push_back(make_unique<base>(B()));

    for (auto& e : group) {
        e.get()->Update(); // update all the objects
    }

}

推荐阅读