gpt4 book ai didi

c++ - C++ 中具有多态性的静态方法

转载 作者:太空狗 更新时间:2023-10-29 19:38:21 25 4
gpt4 key购买 nike

我在使用多态性时遇到了一个奇怪的问题。我有一个实现静态方法的基类。由于各种原因,此方法必须是静态的。基类还有一个纯虚方法run(),所有扩展类都实现了该方法。我需要能够从静态类调用 run()

当然,问题在于静态类没有 this 指针。这个方法可以传入一个 void * 参数。我一直在尝试想出一个聪明的方法来将 run 方法传递给它,但到目前为止没有任何效果。也尝试过将其传递给它。这样做的问题是我必须实例化它,这需要扩展类的知识。这违背了多态性的全部目的。

关于如何解决这个问题有什么想法吗?

最佳答案

不要将其作为 void* 指针传递,而是将其作为指向基类的指针(或引用)传递:

class BaseClass
{
public:
static void something(BaseClass* self) { self->foo(); }
virtual void foo() = 0;
};

关于c++ - C++ 中具有多态性的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1544225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com