我有大量订阅各种事件的子类,例如初始化和实体删除。
目前我通过这样做来解决这个问题
class A{ static void init(); void kill(ID); }
class B{ static void init(); void kill(ID); }
class C{ static void init(); void kill(ID); }
A::init();
B::init();
C::init();
其中,使用多行编辑器并不难,阅读起来也很简单,但是有很多错误的空间,主要是记住将每个新类添加到调用部分,而不是像使用动态多态那样添加自己的类。
如何使用静态多态将其变成类似于
//interface, with default behavior implementation
class W{ static void init(){...} void kill(ID){...} }
class A : W<A> {}
class B : W<B> { static void init(){...} }
constexpr auto w_classes = magic_classlist(A, B, ...)
w_classes::init();
使用 objects-methods,制作 static_casted 对象的列表很容易。
但我需要类功能。因此,如果可能的话,最好通过继承超类来制作可迭代的类列表,而无需手动将它们添加到模板中。