我在使用多态性时遇到了一个奇怪的问题。
我有一个实现静态方法的基类。由于各种原因,该方法必须是静态的。基类还有一个纯虚方法run()
由所有扩展类实现。我需要能够打电话run()
来自静态类。
当然,问题是静态类没有 this 指针。该方法可以传入一个 void * 参数。我一直在尝试想出一种巧妙的方法将 run 方法传递给它,但到目前为止没有任何效果。也尝试过将其传递给它。这样做的问题是我必须实例化它,这需要扩展类的知识。这违背了多态性的全部目的。
关于如何解决这个问题有什么想法吗?
不要将其作为 void* 指针传递,而应将其作为指向基类的指针(或引用)传递:
class BaseClass
{
public:
static void something(BaseClass* self) { self->foo(); }
virtual void foo() = 0;
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)